在我的应用程序中,每个客户都有一种复杂的类,我们会在该类中搜索并替换该特定客户。我运行Queue工作人员每天与eBay同步,为每个客户进行某种搜索和替换。
问题是Laravel队列缓存代码很长一段时间,如果我想去更改任何客户类文件(经常发生),我将不得不重新启动队列工作者(这可能会停止正在运行的作业我不打算停下来)。
所以我的问题是,如何在不重新启动工作人员的情况下强制Laravel Queue重新读取新代码?
答案 0 :(得分:2)
如果使用代码,您将不会缓存:
php artisan queue:listen
另外,兴趣命令:
php artisan queue:work --queue=system,hot,default --tries=10 --timeout=10 --stop-when-empty
答案 1 :(得分:1)
打开一个额外的终端并使用artisan命令
php artisan queue:restart
答案 2 :(得分:0)
此命令将指示所有队列工作者在完成当前任务的处理后优雅地“死亡”,以使现有的任务不会丢失。
您可以通过发出queue:restart命令来正常重启所有工作线程:
php artisan queue:restart
来源:https://laravel.com/docs/5.8/queues#running-the-queue-worker
因此完整的命令链应该是(也许)这样:
composer dump-autoload
php artisan optimize
php artisan clear-compiled
php artisan cache:clear
php artisan view:clear
php artisan route:cache
php artisan queue:restart
我故意遗漏了配置缓存命令 ,因为我不想一开始就运行它。运行它,实际上将开始缓存您的配置文件afaik,因此我们不希望这样做。
我之所以回答,是因为我想将自己的答案存储到evernote,以至于永远不必再处理bs