MySQLi случайная и временная фатальная ошибка

У меня есть среда, в которой я использую beanstalkd и pheanstalk для асинхронной очереди и обработки заданий. Один из моих работников передал имя таблицы MySQL и идентификатор строки вместе с другой информацией. Затем этот работник обновляет эту строку этой таблицы.

Это хорошо работает в 99% случаев. Тем не менее, иногда мой работник падает с:

PHP Fatal error:  Call to a member function bind_param() on a non-object in /path/to/file.php on line 62

Как уже упоминалось, эта же строка работает нормально в 99% случаев, но сбои время от времени. Задание, в котором произошел сбой, еще не удалено и остается в очереди для последующей обработки другим работником. Поэтому, когда я перезагружаю работника, он обрабатывает так же работа это разбилось на несколько мгновений назад без проблем.

Мой PHP выглядит примерно так:

$stmt = $mysqli->prepare("UPDATE `database`.`$table` SET `Limit` = ? WHERE `D_ID` = ?");
$stmt->bind_param("si", $Limit, $rowID);
$stmt->execute();
$stmt->close();

Лучшее, что я могу понять, это то, что, поскольку это асинхронно, какой-то другой процесс блокирует эту таблицу / строку во время выполнения. Я мог бы представить, что MySQL-запрос просто ждет своей очереди, а не сбой.

К сожалению, если это так, у меня нет возможности проверить или даже исправить это, поэтому мне нужно обойти это. Если это не так, мне нужно несколько советов о том, какова причина и как ее устранить.

Обновить
Как предлагается в комментариях, я проверил код ошибки mysql и сообщение об ошибке. Результат:

(2006) MySQL server has gone away

Судя по всему, соединение с базой данных не удалось, однако, когда работник удаляет задание и получает следующее, оно работает просто отлично, используя то же соединение. Что это значит?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]