猿问

Laravel 队列不遵守作业特定的超时

根据 Laravel 文档,我应该能够指定特定于作业的超时:


如果在作业中指定了超时,它将优先于在命令行中指定的任何超时 [...]


因此,当我在artisan queue:listen没有--timeout选项的情况下运行并在作业中定义超时时(就像 Laravel 告诉我的那样):


public $timeout = 600;

我希望该特定作业的超时时间为 600 秒。不幸的是,我仍然得到一个ProcessTimedOutException. 自定义超时仅在我使用--timeout=600.


我正在使用 Laravel 6 和 PHP 7.4。正如 Laravel 推荐的那样,我还启用了pcntlPHP 扩展。对于队列,我使用database具有以下配置的驱动程序:


'database' => [

    'driver' => 'database',

    'table' => 'jobs',

    'queue' => 'default',

    'retry_after' => 90,

]


慕仙森
浏览 250回答 1
1回答

RISEBY

我打开了一个错误报告,因为我无法让它工作。但是,当使用queue:work.我已经对此进行了测试,并且可以确认它可以与queue:work. 根据我的错误报告的评论者,它不起作用,queue:listen因为:queue:listen运行多个进程,同时queue:work是一个进程。queue:listen为它运行的进程设置一个超时时间,这样我们就不会让幽灵进程在机器上运行,以防主进程由于某种原因被杀死。
随时随地看视频慕课网APP
我要回答