2

我通过以下步骤在共享主机中实现了 laravel 队列:

1-我每分钟在主机上设置这个 CronJob:

* * * * * /usr/local/bin/php /home1/myuser/myfolder/artisan schedule:run >> /dev/null 2>&1

2-我在 kernel.php 上设置了这个命令:

$schedule->command('queue:work --daemon')->withoutOverlapping();

我排队的工作运行良好

我的问题是:完成后是否有必要对“死”队列使用 queue:restart laravel 命令?

4

1 回答 1

4

您不必在队列完成后将其杀死(完成了什么?)。队列工作者自动运行所有作业。您甚至不需要调度程序。只需运行 php artisan queue:work --daemon 一切都会自动发生。

我认为关键点是当您更新您的 laravel 应用程序或队列工作人员因某种原因停止(崩溃)时。

关于更新: php artisan queue:work --daemon使用您的应用程序启动时的实例,就像php artisan tinker一样。如果您在更新之前不停止队列,通常会在系统上以许多队列进程结束,因为应用程序将在更新后启动新进程。我不确定这些过程是否会造成任何损害,但我会停止排队。我还鼓励您阅读https://laravel.com/docs/7.x/scheduling

关于崩溃:在我们公司,我们正在使用一项服务来确保 php artisan queue:work 进程正在运行。这里的好处是我们可以在更新时停止服务。

如果我错了,请纠正我。我以与 OP 相同的方式开始,这就是我现在 :)

于 2020-09-05T07:28:45.270 回答