Laravel Forge:如何阻止排队工人?

时间:2018-06-02 00:22:15

标签: laravel laravel-forge

我已将队列工作程序配置为Forge上的守护程序,然后使用推荐的部署脚本命令(public class List : #if __IOS__ SfListView #else ListView #endif { } )。

如何手动停止并重新启动队列工作程序?如果我停止它,主管将重新启动它。我是否需要先在Forge中杀死活跃的工作人员?

这可能是临时性的。例如,如果我想清除队列已打开的日志文件。

1 个答案:

答案 0 :(得分:1)

我在部署讨论中非常直言不讳,我总是告诉人们使用supervisorctl命令停止他们的工作进程。

supervisorctl stop <name of task>

使用queue:restart命令实际上不会重启任何内容。它在缓存中设置工作进程检查和关闭的条目。正如您所注意到的,主管将重新启动该过程。

这意味着queue:restart有一个很大的问题,忽略了命名以及它没有重启的事实;它将导致使用相同缓存的所有服务器上的所有工作进程重新启动。我认为这是错误的,我认为部署应该只影响当前部署到的当前服务器。

如果您正在使用每服务器缓存,例如file缓存驱动程序,那么这还有另一个问题;如果您的部署完全删除了网站文件夹会发生什么?缓存会改变,队列将重新开始,工作进程可能混合使用新旧代码。有趣的事情要调试......

主管将在关闭时发出信号,并等待它完全关闭,如果没有,则强行将其杀死。可以在超级用户配置文件中配置这些超时。这意味着使用supervisorctl来停止队列进程不会终止任何作业,并且#34;中途完成(假设它们运行的​​时间足够短,或者你增加了超时)。