不重启情况下清除Laravel队列缓存

8
在我的应用程序中,每个客户都有一种复杂的类,在这个类中我们会进行一些特定客户的搜索和替换。我运行队列工作器来为每个单独的客户运行与eBay的每日同步以进行某种形式的搜索和替换。
问题在于Laravel队列会缓存代码相当长的时间,如果我想更改任何客户类文件(这经常发生),我将不得不重启队列工作器(这可能会停止正在运行的作业,而我并不打算停止)。
所以我的问题是,如何强制Laravel队列重新读取新的代码而不重启工作器?

什么是“新代码”? - Niklesh Raut
我指的是修改后的代码。我希望Laravel能够读取客户文件中发生的任何修改。 - Assem
你想在生产系统中运行时更改代码,而不让 Laravel 出现任何错误? - julianstark999
3个回答

8

如果使用以下代码,则无法缓存:

php artisan queue:listen

另外,还有一个“interest”命令:

php artisan queue:work --queue=system,hot,default --tries=10 --timeout=10  --stop-when-empty

6

打开额外的终端并使用Artisan命令

php artisan queue:restart

4
这个命令会指示所有队列工作者在处理完当前作业后优雅地“死亡”,以确保没有现有的作业丢失。
您可以通过发出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

我故意省略了配置缓存命令,因为我不想最初运行它。据我所知,运行它实际上会开始缓存您的配置文件,因此我不希望这样做。
我回答是因为我想将我的答案存储到evernote中,以后再也不必处理那些麻烦事了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接