У меня проблема с beanstalkd в проекте symfony (3.4).
У меня есть команда symfony, используемая для анализа информации, анализатор некоторое время верен, чтобы команда работала 24/7.
$pheanstalk = new Pheanstalk('127.0.0.1');
while (true) {
$pheanstalk->watch($worker);
$queue = $pheanstalk->statsTube($worker);
if ($queue['current-jobs-ready'] > 0) {
analyseInformations();
else {
//get the most charged worker...
}
Проблема в том, что через X минут, 5, 10 или 15 команда возвращает исключение: ORA-03135 Connection Lost
Dba сказал, что проблема связана с проектом symfony, а не с базой данных oracle, я что-то пропустил с подключением beanstalkd?
Beanstalkd имеет тайм-аут подключения к базе данных? Что-нибудь сделать с подключением к пулу symfony?
В проекте мы используем doctrine dbal для запроса к базе данных.
Сообщение об исключении:
111:29:01 ERROR [console] Error thrown while running command "analyser". Message: "An exception occurred while executing 'SELECT XXX FROM XXX:
ORA-03113: end-of-file on communication channel ID de processus : 20624 ID de session : 154, Numéro de série : 6639"
Спасибо
Я редактирую свой вопрос с исключением






PHP не особенно хорошо подходит для длительных процессов. Я выполнил десятки миллионов заданий через Beanstalkd и сотни миллионов - через другие системы очередей, и обычно выполняю цикл для некоторого количества итераций (от 5 или 10 до нескольких сотен или более), а затем выхожу из сценария, чтобы очистите его и перезапустите.
У вас может быть все, что запускает сценарий, а также организовать его перезапуск, init, upstart, supervisord или сценарий оболочки, который запускается из чего-то подобного.
Я предпочитаю сценарий оболочки, потому что тогда я могу вернуть конкретное значение из сценария, которое проверяется сценарием bash, а затем с ним можно действовать. Для одного значения я могу немедленно перезапустить (как запланировано) или приостановить на мгновение, или, если это другое значение, возможно, это был незапланированный выход, который будет приостанавливаться на несколько секунд и регистрировать проблему.
Может быть, это тайм-аут выполнения PHP?