在Laravel 5.3中。
我正在通过詹金(Jenkin)运行laravel命令:
php artisan queue:work
但是我需要阻止它。理想情况下,我想在队列作业变空后停止工作程序,但是在Laravel 5.3上是不可能的。因此,另一种选择是在某个时间(例如1分钟)后停止命令。
一段时间后,如何停止通过jenkins运行的进程?或停止php artisan命令。
有了php artisan queue:restart
,我可以停止所有工作,所以我尝试了:
php artisan queue:work
sleep 60; php artisan queue:restart
但是第二条线永远不会到达,因为工作人员仍在运行。
有什么建议吗?
答案 0 :(得分:2)
您可以使用一些解决方案来解决它
1。
您还可以运行:
php artisan queue:work --once
2-这将启动应用程序的实例,处理单个作业,然后终止脚本。
php artisan queue:listen
queue:listen命令仅在无限循环内运行queue:work --once命令,这将导致以下情况:
使用queue:listen
可确保为每个作业创建一个新的应用程序实例,这意味着您无需手动重新启动工作程序,以防万一您对代码进行了更改,但同时也意味着更多的服务器资源将被消耗。