У меня долгая работа, построенная с использованием Propel2
, Тем не менее, иногда он падает с печально известной mysql server has gone away
ошибка. Я хотел бы исправить эту ошибку, повторно подключившись к серверу, возможно, подождав несколько секунд. У кого-нибудь есть идеи, как заставить Propel переподключиться после потери соединения? Я не нашел никаких подсказок, как это сделать из приводить в движение или же PDO API.
Я столкнулся с этой проблемой, когда в сочетании с очередью Laravel. Очередь: рабочий демон является процессом, после истечения времени ожидания он не восстанавливает соединение сам по себе. Пробовал постоянную связь, что не помогло.
Способ, которым я решил это сейчас, немного специфичен для очереди / уровня лавара, но может также помочь вам найти решение.
Теперь я заставляю каждое задание, обрабатываемое работником, отключать соединения propel с помощью события Queue :: before ().
$manager = Propel::getConnectionManager('default');
$manager->closeConnections();
Новые запросы, сделанные Propel, затем создадут новое соединение (хотя это будет происходить для каждой новой работы, которая обрабатывается рабочим)
Возможно, вы могли бы попытаться / поймать ваш запрос, посмотреть, что является ошибкой / исключением, и когда он «сервер mysql ушел», вызвать отключение и повторить запрос
Других решений пока нет …