清除Laravel队列缓存而不重新启动

时间:2017-11-22 12:50:42

标签: php laravel web

在我的应用程序中,每个客户都有一种复杂的类,我们会在该类中搜索并替换该特定客户。我运行Queue工作人员每天与eBay同步,为每个客户进行某种搜索和替换。

问题是Laravel队列缓存代码很长一段时间,如果我想去更改任何客户类文件(经常发生),我将不得不重新启动队列工作者(这可能会停止正在运行的作业我不打算停下来)。

所以我的问题是,如何在不重新启动工作人员的情况下强制Laravel Queue重新读取新代码?

3 个答案:

答案 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