运行Job时,我有一个奇怪的行为: 在开发服务器(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.
config / queue.php
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
],
这种情况发生在作业排队后...开始工作时...大约30秒后(失败) 例外是在fail_jobs表中
我虽然可能取决于php max_execution_time指令,但是当我这样做
php -r "echo ini_get('max_execution_time') . PHP_EOL;"
它告诉我零(没有超时...这是正确的)
作业以这种方式排队:
dispatch((new Syncronize($file))->onQueue('sync'));
Sincronize Job没有超时(尝试1次),只需要调用两个artisan命令(如果从shell调用就可以在prod和dev服务器上正常工作)。
在我使用的开发服务器上启动作业
php artisan queue:work --queue=sync,newsletter,default
我在产品服务器上使用此
对可能是什么原因有任何了解吗?
答案 0 :(得分:1)
发现了问题... 在我的服务/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"
;;
我没有检查该进程是否已经在运行,所以我启动了两次。
我在ps axu
中看到了2个进程,这似乎是原因
此检查已解决
if [ -e /var/run/myservice.pid ]; then
echo "Service is running. Call stop first".
exit 1
fi