Laravel queue process timeout error

2020-05-20 06:24发布

问题:

I'm on Laravel using php artisan queue:listen to run queued jobs. One of these jobs is fairly involved and takes a long time, and so I'm getting the following error:

[Symfony\Component\Process\Exception\ProcessTimedOutException]                                                                                                                                                                              
The process ""/usr/local/Cellar/php55/5.5.14/bin/php" artisan queue:work  
--queue="QUEUE_URL" --delay=0 --memory=128 --sleep=3 --tries=0" 
exceeded the timeout of 60 seconds.

I know that I could run queue:listen with an arbitrarily high timeout value, but that's not ideal, as I do want it to time out in the event that some process is actually unreseponsive. I tried regularly calling set_time_limit(60) within the function called by the job, but that did not solve my problem.

I found a thread online mentioning Symfony\Component\Process\Process->setTimeout(null), but I don't know how to access that process object, or if that would even fix the issue.

Any help would be much appreciated.

回答1:

Adding --timeout=0 worked for my set up.

UPDATE: The entire command would therefore be php artisan queue:listen --timeout=0.

Hope this helps.



回答2:

This is a known bug in Laravel v5.3:

You should upgrade to v5.5 to fix this problem.

Another way is hacking the source code as explained here



回答3:

After investing much time I got the solution

Add below line in Job class and your job run without time out, even if you put the job in a crontab entry

public $timeout = 0;