Php Laravel队列未遵守作业特定超时
根据Laravel文档,我应该能够指定特定于作业的超时: 如果在作业上指定了超时,则它将优先于在命令行[…]上指定的任何超时 因此,当我运行Php Laravel队列未遵守作业特定超时,php,laravel,queue,jobs,Php,Laravel,Queue,Jobs,根据Laravel文档,我应该能够指定特定于作业的超时: 如果在作业上指定了超时,则它将优先于在命令行[…]上指定的任何超时 因此,当我运行artisan queue:listen而不使用--timeout选项时,我会在作业中定义超时(就像Laravel告诉我的那样): 我预计该特定作业的超时时间为600秒。不幸的是,我仍然收到一个ProcessTimedOutException。自定义超时仅在使用--timeout=600运行队列时有效 我在PHP7.4中使用Laravel6。根据Larave
artisan queue:listen
而不使用--timeout
选项时,我会在作业中定义超时(就像Laravel告诉我的那样):
我预计该特定作业的超时时间为600秒。不幸的是,我仍然收到一个ProcessTimedOutException
。自定义超时仅在使用--timeout=600运行队列时有效
我在PHP7.4中使用Laravel6。根据Laravel的建议,我还启用了pcntl
PHP扩展。对于队列,我使用具有以下配置的数据库驱动程序:
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
]
我开了一家银行,因为我无法让它运作。但是,在使用queue:work
运行队列时,作业类中指定的超时似乎仅优先于命令行中指定的超时
我已经对此进行了测试,可以确认它可以与queue:work
一起使用。根据我的bug报告中的一位评论员的说法,它不适用于queue:listen
,因为:
queue:listen
运行多个进程,而queue:work
是单个进程<代码>队列:侦听
为它运行的进程设置超时,以便在主进程因某种原因被终止的情况下,我们不会让重影进程在机器上运行
queue.php文件中队列的配置设置是什么?如果将retry\u之后的更改为610
,会发生什么情况?答案在Laravel的官方文档中,就在链接的开头--命令行的超时也存在。我想在作业类中设置超时,而不是在命令行中设置超时。根据第节最后几段,这应该是可能的。在命令行中设置超时将为所有作业设置超时。
'database' => [
'driver' => 'database',
'table' => 'jobs',
'queue' => 'default',
'retry_after' => 90,
]