Проблема с Laravel в очереди Джобса. Странное поведение, отличающееся для разработчика и производства

У меня странное поведение при выполнении задания:
На сервере dev (win 7 php 7.2.10) все работает нормально,
на рабочем сервере Linux CentOS php 7.0.10 выдает исключение:

Illuminate\Queue\MaxAttemptsExceededException: A queued job has been attempted too many times. The job may have previously timed out.

конфиг / queue.php

    'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],

это происходит после того, как задание поставлено в очередь … когда оно начинает работать … примерно через 30 секунд (не выполнено)
исключение находится в таблице failed_jobs

Я хотя это может зависеть от директивы php max_execution_time, но когда я делаю

php -r "echo ini_get('max_execution_time') . PHP_EOL;"

он показывает мне ноль (без тайм-аута … что правильно)

Задание ставится в очередь следующим образом:

dispatch((new Syncronize($file))->onQueue('sync'));

Задание Sincronize не имеет тайм-аута (имеет 1 попытку) и просто вызывает две ремесленные команды, которые прекрасно работают как на prod, так и на dev-сервере, если они вызваны из оболочки.

https://pastebin.com/mnaHWq71

чтобы начать работу на сервере Dev, который я использую

php artisan queue:work --queue=sync,newsletter,default

на сервере ProD я использую это

https://pastebin.com/h7uv5gca

Любая идея о том, что может быть причиной?

0

Решение

Нашел проблему …
был в моем распоряжении /etc/init.d/myservice

cd /var/www/html/
case "$1" in
start)
php artisan queue:work --queue=sync,newsletter,default &
echo $!>/var/run/myservice.pid
echo "server daemon started";;

Я не проверял, запущен ли уже процесс, поэтому запускаю его дважды.
Я видел 2 процесса в ps axu и кажется, что это было причиной
Эта проверка решена

if [ -e /var/run/myservice.pid ]; then
echo "Service is running. Call stop first".
exit 1
fi
1

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector