Propel2 восстановить соединение, когда сервер MySQL ушел

У меня долгая работа, построенная с использованием Propel2, Тем не менее, иногда он падает с печально известной mysql server has gone away ошибка. Я хотел бы исправить эту ошибку, повторно подключившись к серверу, возможно, подождав несколько секунд. У кого-нибудь есть идеи, как заставить Propel переподключиться после потери соединения? Я не нашел никаких подсказок, как это сделать из приводить в движение или же PDO API.

4

Решение

Я столкнулся с этой проблемой, когда в сочетании с очередью Laravel. Очередь: рабочий демон является процессом, после истечения времени ожидания он не восстанавливает соединение сам по себе. Пробовал постоянную связь, что не помогло.

Способ, которым я решил это сейчас, немного специфичен для очереди / уровня лавара, но может также помочь вам найти решение.

Теперь я заставляю каждое задание, обрабатываемое работником, отключать соединения propel с помощью события Queue :: before ().

$manager = Propel::getConnectionManager('default');
$manager->closeConnections();

Новые запросы, сделанные Propel, затем создадут новое соединение (хотя это будет происходить для каждой новой работы, которая обрабатывается рабочим)

Возможно, вы могли бы попытаться / поймать ваш запрос, посмотреть, что является ошибкой / исключением, и когда он «сервер mysql ушел», вызвать отключение и повторить запрос

3

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

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

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