2015-11-25 63 views
0

我使用aritsan命令(lavaral 5.1)交易后台作业,aritsan crontab的工作产生许多progcess

我设置* * * * * PHP /路径/到/工匠时间表:运行1 >>的/ dev/null的2 > & 1在crontab中按照mamul。

,我的任务设置像

'$schedule->command('job')->cron('0 * * * *');' 

在Kernel.php

这个任务的效果很好,但是当我在几个小时后检查我的服务器过程中,我发现aritsan产生许多过程,

注意:在我的工作中,我在handle()方法编程结束后写exit()。 请帮我看看,为什么工匠会生成这些进程(不退出?),它占用了很多内存。

非常感谢!

~ ps -aux|grep artisan|grep -v grep|wc -l 
24 

root  15690 0.0 2.3 235588 11872 ?  S Nov16 0:05 /usr/local/bin/php artisan job 
root  16382 0.0 2.3 237748 11996 ?  S Nov16 0:06 /usr/local/bin/php artisan job 
root  17735 0.0 2.3 237748 12036 ?  S Nov16 0:05 /usr/local/bin/php artisan job 
root  17786 0.0 2.4 237748 12052 ?  S Nov14 0:15 /usr/local/bin/php artisan job 
root  20274 0.0 2.4 237748 12056 ?  S Nov14 0:14 /usr/local/bin/php artisan job 
root  23771 0.0 2.4 237748 12056 ?  S Nov14 0:12 /usr/local/bin/php artisan job 
root  24191 0.0 2.4 237748 12056 ?  S Nov16 0:03 /usr/local/bin/php artisan job 
root  26192 0.0 2.4 237748 12048 ?  S Nov16 0:02 /usr/local/bin/php artisan job 
root  26287 0.0 2.4 237748 12048 ?  S Nov14 0:12 /usr/local/bin/php artisan job 
.... 
+0

应该不需要将'exit'添加到Job的'fire'或'handle'方法中。如果删除它,会发生什么? – Luceos

+0

@Luceos如果我没有在处理方法中设置退出,可能会导致这个问题。 – laijim

回答

0

你应该尝试与

php /path/to/artisan schedule:run 

手动执行预定任务,看看需要多少时间来run.If这需要大量的时间就意味着你有一个瓶颈的地方,它永远不会到达你的出口()。 你可能有一个赛车状况有一个以上的进程请求相同thing.You需要找到耗时的任务,并尝试优化it.Also你可能想使用

->withoutOverlapping(); 

使不多于一个任务正在同时运行。

+0

谢谢你,我的朋友。我检查了我的程序,可能会因为这个问题而导致超时引发,我设置了较低的curl超时时间,这个问题不再发生。 – laijim

+0

你不止欢迎。你也可以接受答案。 – tix3

+0

我接受你的答案,再次感谢。 – laijim