如何为工匠工作设置超时?当超时的工作将被杀死。
我在我的应用程序上使用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%。所以我想为工匠的工作设置一个超时,当工作的时间被自动终止时。
答案 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