У меня странное поведение при выполнении задания:
На сервере 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-сервере, если они вызваны из оболочки.
чтобы начать работу на сервере Dev, который я использую
php artisan queue:work --queue=sync,newsletter,default
на сервере ProD я использую это
Любая идея о том, что может быть причиной?
Нашел проблему …
был в моем распоряжении /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
Других решений пока нет …