Laravel队列任务没有更新到最新的代码。

12

我正在使用Laravel队列任务来发送带有Excel附件的电子邮件。然而,很多时候当我更新代码更改时,它并不考虑更新后的代码,而是运行旧代码。我该如何防止这种情况发生?


2
重新启动队列工作进程,问题应该就解决了。 - thisiskelvin
停止队列,并在更新代码后重新开始。 - Jignesh Joisar
1
也尝试过了清除编译、重启supervisor、清除缓存和视图等操作,但问题仍然存在。 - Nitish Patra
运行 php artisan queue:restart - Jacob
如果您在设置或.env文件中更改了任何内容,您还必须运行config:cache。根据您的服务器设置,您可能需要实际终止queue:work进程而不是重新启动它。 - Dimitri Mostrey
显示剩余4条评论
1个回答

34
每次部署 Laravel 应用程序或进行任何代码更改时,都应运行以下命令:
php artisan queue:restart
当然,请确保在Supervisor中将autostart设置为true。 您可以阅读https://laravel.com/docs/5.4/queues#running-the-queue-worker: 由于队列工作者是长时间运行的进程,它们不会在没有重新启动的情况下获取您代码的更改。因此,使用队列工作者部署应用程序的最简单方法是在部署过程中重启工作者。您可以通过发出queue:restart来优雅地重新启动所有工作者。

2
如果您使用 Laravel Envoyer 和 Forge,这种方法将无法正常工作。我们尝试了许多方法,但实际上只有杀死 supervisor 进程才能重启。真希望还有其他的解决方式。 - tmarois

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