php – Laravel Artisan CLI安全地停止守护程序队列工作者
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php – Laravel Artisan CLI安全地停止守护程序队列工作者,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1451字,纯文字阅读大概需要3分钟。
内容图文
![php – Laravel Artisan CLI安全地停止守护程序队列工作者](/upload/InfoBanner/zyjiaocheng/700/15748bbd02be409b882cde602d816e4a.jpg)
为了处理大量的工作,我运行可变数量的队列工作者,具体取决于完成的工作量.我不想在完成我们认为合适的时间段内完成需要完成的工作之外运行更多的工人.
目前,我启动了5个守护程序队列工作程序用于测试目的,但是在生产中,这个数字可能介于25和25之间. 100名工人,可能更多.我知道在部署时,我必须首先通过使用php artisan down将框架置于维护模式来停止队列工作,因为–daemon标志导致框架仅在工作程序启动时加载,因此新代码不会在部署期间生效,直到工作人员重新启动.
如果我出于某种原因需要停止工作,我可以使用php artisan将应用程序置于维护模式,这将导致工作人员在完成当前工作(如果他们正在工作)工作后死亡.但是,有时我可能会在不将整个应用程序置于维护模式的情况下杀死工作人员.
有没有一种安全的方法来阻止工人继续处理他们当前的工作,然后在不将整个应用程序置于维护模式的情况下死亡?
基本上我需要的是一个php工匠队列:stop,其行为类似于php artisan队列:restart,但在作业完成后不会重新启动worker.
我在那里期待有一个像php工匠队列:停止命令,这样做,但似乎并非如此.
使用ps aux | grep php我能够为工作者获取进程ID,并且我可以通过这种方式终止进程,但我不想在处理作业的过程中终止进程.
谢谢.
解决方法:
我们已经在我们的应用程序中实现了类似的东西 – 但它并不是Laravel本身内置的东西.您必须通过向if块添加另一个条件来编辑this file,以便它可以调用stop函数.您可以通过在Worker类中设置一个静态变量来执行此操作,无论何时运行您必须执行的自定义命令(即php artisan queue:pause),或者通过在某处检查原子值(即将其设置为一些缓存,如redis,memcached,APC甚至MySQL,虽然这意味着你将使用相同的自定义命令设置这个while循环的每个循环一个MySQL查询.
内容总结
以上是互联网集市为您收集整理的php – Laravel Artisan CLI安全地停止守护程序队列工作者全部内容,希望文章能够帮你解决php – Laravel Artisan CLI安全地停止守护程序队列工作者所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。