Mysql время ожидания соединения в доктрине - PullRequest
2 голосов
/ 07 ноября 2010

Я разработал приложение, которое отправляет большое количество писем разным пользователям в пакетном режиме.Наиболее распространенной проблемой, с которой я столкнулся в этом приложении, является проблема тайм-аута подключения MySQL.В промежутке между пакетами, когда в ранее открытом соединении не было выполнено ни одного запроса и соединение долгое время не использовалось, MySQL закрывает соединение.После отправки текущего пакета, когда я снова пытаюсь выполнить любой sql-запрос, он выдает ошибку подключения mysql.

Сейчас я использую функцию mysql_ping ($ conn), чтобы проверить, истек ли тайм-аут соединения или нет.Если время ожидания истекло, я снова подключаюсь с помощью функции mysql_connect ().Теперь я перехожу к доктрине, а не к родной функции PHP.Есть ли в Doctorine функция recconnect ()?

Ответы [ 2 ]

0 голосов
/ 12 ноября 2018

Существует специальный пакет, позволяющий возобновить подключение: https://github.com/facile-it/doctrine-mysql-come-back

Вы можете установить максимальное количество повторных попыток или вы можете вручную вызвать метод повторных попыток подключения!

0 голосов
/ 09 ноября 2010

Никогда не сталкивался с этой проблемой с моими пакетными действиями, но я думаю, что вы, вероятно, могли бы сделать что-то подобное в тех местах вашего кода, где, как вы думаете, существует риск, что время соединения истечет:

// Fetch current connection
$conn = Doctrine_Manager::connection();
if(!$conn) {
   // Open a new connection
   $conn = Doctrine_Manager::connection('mysql://username:password@localhost/whatever', 'connection 1');
}

http://docs.doctrine -project.org / проекты / doctrine1 / о / последний / ы / ручной / connections.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...