Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Laravel queue process timeout error

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.

like image 650
Will Durney Avatar asked Sep 16 '14 20:09

Will Durney


4 Answers

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

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

Hope this helps.

like image 53
David Lemayian Avatar answered Sep 24 '22 15:09

David Lemayian


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;
like image 40
Anmol Mourya Avatar answered Sep 24 '22 15:09

Anmol Mourya


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

like image 41
Mostafa Lavaei Avatar answered Sep 21 '22 15:09

Mostafa Lavaei


A queue is performed mainly for the requests which take a lot of time to get done link sending mail in bulk, import data queue jobs run in the background. it improves our web app performance too. If we don't set timeout it takes default 60 Sec. the time interval and if we set timeout as a 0, it means we set infinite timeout the request is continuously run till it won't complete. To set the timeout, we have to run this command: php artisan queue:listen --timeout=0

Here is the reference link of official document: https://laravel.com/docs/8.x/queues

like image 33
Jeff Harvey Avatar answered Sep 24 '22 15:09

Jeff Harvey