У меня есть скрипт, который запускается из командной строки и выполняет некоторую обработку базы данных mysql (выберите данные из одной таблицы, сделайте некоторые вычисления и вставьте / обновите другую таблицу). После примерно 10000 итераций я снова получаю следующую ошибку:
DBALStatement :: removeColons (): отправка 5 байтов завершилась неудачно с errno = 32
Сломанная труба
Это метод, о котором идет речь:
public static function removeColons($params) : array
{
$result = [];
foreach ($params as $key => $val) {
if ($key[0] == ':') {
$key = substr($key, 1);
}
$result[$key] = $val;
}
return $result;
}
Строка, в которой происходит ошибка, является оператором return:
return $result;
Я понимаю, что при выполнении сетевых или файловых операций или чего-либо еще могут возникать разрывы каналов, но как я могу получить эту ошибку в простом операторе возврата, когда рядом нет канала? Что мне не хватает?
редактировать: Кажется, что во время запроса mysql происходит разрыв канала, что будет иметь немного больше смысла. Я в настоящее время все еще пытаюсь выяснить, является ли это проблемой тайм-аута или чем. Тем не менее, важно отметить, что метод и номер строки, указанные в журнале ошибок PHP, в этом случае кажутся неправильными, поскольку ошибка явно не возникает в операторе возврата. Я бы посчитал это ошибкой в отчете об ошибках PHP.
Задача ещё не решена.
Других решений пока нет …