如何为Laravel工匠设置超时

时间:2015-04-25 06:23:36

标签: php laravel

如何为工匠工作设置超时?当超时的工作将被杀死。

我在我的应用程序上使用Laravel 5.0。我在app / Console / Kernel.php中每分钟安排一些工匠工作。 当我从事那些工作时

ps -ef | grep artisan

似乎每个工作都在单独的流程中运行。

  

root 23322 1 0 13:44? 00:00:00 xxx / php-5.5.7 / bin / php artisan fetchTopic 0 10 1

     

root 23324 1 0 13:44? 00:00:00 xxx / php-5.5.7 / bin / php artisan fetchTopic 0 10 2

     

root 23326 1 0 13:44? 00:00:00 xxx / php-5.5.7 / bin / php artisan fetchComment

当一个作业完成任务时,该过程将自动终止。 但奇怪的是,有些进程没有正常被杀死。随着时间的推移,越来越多的奇怪进程是永久性的,导致CPU 100%。所以我想为工匠的工作设置一个超时,当工作的时间被自动终止时。

2 个答案:

答案 0 :(得分:3)

我检查了Laravel代码,并没有优雅的方法来杀死这些漫长的工匠流程。

但是,您可以自行承担限制整个PHP执行时间的风险。您可以使用函数set_time_limit()或在php.ini中添加max_execution_time

答案 1 :(得分:0)

我遇到了同样的问题,并且更改了 cli php.ini文件中的max_input_time的值导致了预期的效果。

示例:/etc/php/7.3/cli/php.ini

;;;;;;;;;;;;;;;;;;;
; Resource Limits ;
;;;;;;;;;;;;;;;;;;;

; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 99