gpt4 book ai didi

php - Laravel 队列 :restart is not killing workers

转载 作者:行者123 更新时间:2023-12-03 13:51:57 27 4
gpt4 key购买 nike

我有一个通过 envoyer 部署到非伪造服务器的 laravel 5.4 应用程序。我正在数据库驱动程序上运行队列工作器,使用主管进行监视,如文档中所述进行设置;

command=php /home/data/app/current/artisan queue:work --sleep=3 --tries=3

并使用 envoyer 部署 Hook
cd ~/app/current
php artisan queue:restart

问题是,在每次部署后,队列工作人员没有重新启动,旧的工作人员继续运行,然后抛出错误,因为他们正在处理以前版本的代码。运行队列:从 CLI 手动重启也不起作用。
data@medicone:~/ccpbase/current$ ps -aux | grep queue:work
data 4347 0.0 0.2 292988 34852 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4348 0.0 0.2 292988 34864 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4349 0.0 0.2 292988 34720 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4350 0.0 0.2 292988 34880 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4351 0.0 0.2 292988 34972 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4382 0.0 0.2 292988 34904 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4383 0.0 0.2 292988 34992 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4384 0.0 0.2 292988 34980 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4863 0.0 0.0 14228 1016 pts/0 S+ 11:32 0:00 grep queue:work
data@medicone:~/ccpbase/current$
data@medicone:~/ccpbase/current$ php artisan queue:restart
Broadcasting queue restart signal.
data@medicone:~/ccpbase/current$ ps -aux | grep queue:work
data 4347 0.0 0.2 292988 34852 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4348 0.0 0.2 292988 34864 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4349 0.0 0.2 292988 34720 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4350 0.0 0.2 292988 34880 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4351 0.0 0.2 292988 34972 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4382 0.0 0.2 292988 34904 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4383 0.0 0.2 292988 34992 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4384 0.0 0.2 292988 34980 ? S 11:12 0:00 php /home/data/ccpbase/current/artisan queue:work --sleep=3 --tries=3
data 4869 0.0 0.0 14228 960 pts/0 S+ 11:32 0:00 grep queue:work
data@medicone:~/ccpbase/current$

如果我手动找到并终止了 8 个正在运行的进程,主管会正确地重新启动它们并且我排队的作业会再次运行。

任何人都可以想出什么可以阻止这些 worker 被杀害? storage/logs/laravel.log 中没有任何相关内容

最佳答案

就我而言,php artisan queue:restart什么也没做。队列工作人员的年龄证实,他们并没有因此而重新启动。以下将显示您的工作人员何时启动。我的都不同了,几天了。

$ ps -eo pid,lstart,cmd | grep queue:work

作为我的部署脚本(在我的例子中是 gitlab)的一部分,我正在运行 php artisan queue:restart ,因此队列工作器在任何代码被推送后重新启动。

正如之前的回答中提到的, queue:restart命令保存到 Laravel 缓存。我正在使用"file"缓存驱动程序,因此缓存条目位于磁盘上 storage/framework/cache/data默认情况下。

原来我的部署脚本正在运行 php artisan queue:restartgitlab-runner用户,因此它创建的任何缓存条目也归该用户所有。

运行以下立即解决了我的问题。队列工作人员在运行时重新启动:
sudo chown -R www-data:www-data storage/framework/cache

在此之后,命令行调用 php artisan queue:restart完美地工作。

长期修复是确保我的部署脚本运行 php artisan queue:restart作为适当的用户(或 chown 是需要的缓存文件)。

tldr;如果使用"file"缓存驱动程序,您的 Web 服务器用户需要能够读/写由 php artisan queue:restart 创建的缓存条目。命令。检查您的权限!

关于php - Laravel 队列 :restart is not killing workers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42248286/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com