Laravel 队列:在主机中永远运行的工作?

Posted

技术标签:

【中文标题】Laravel 队列:在主机中永远运行的工作?【英文标题】:Laravel Queue:work running forever in host? 【发布时间】:2018-04-20 11:54:43 【问题描述】:

我有一个关于 Laravel 队列的问题。 首先我的队列驱动程序是数据库,如果我曾经使用命令 queue:work 调用 cron 作业,队列将永远工作吗?或者我必须定义一个每分钟运行一次的 cron 作业?

【问题讨论】:

检查你的 laravel.log 文件,你的工作肯定有一些错误.. @ankitpatel 我的问题是关于 cron 工作的。我需要设置一个 cron 来调用 queue:work 每分钟?或每年打电话完成 【参考方案1】:

您需要在 Console/Kernel.php 文件的 Schedule 函数中设置每分钟的命令或队列

命令:

$schedule->command('your-command')->everyMinute();

工作:

$schedule->job(new JOBCLASS)->everyMinute();

那你需要输入

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

在服务器上的 crontab 文件中检查内核文件中的每一分钟以检查是否设置了任何命令

【讨论】:

**** php /path artisan queue:work 和 **** php /path sheduler:run 有什么区别? @MortezaNegahi 队列和调度器是完全不同的东西!阅读文档! 但是 sheduler:run 运行我的工作和 queue:work 也运行它!我不能有这种不同的感觉,谢谢你的大力帮助:-) 您需要设置调度程序来运行您的作业。我上面提到的答案会将您的所有作业设置在数据库作业表中。调度程序将每分钟检查作业表中是否有任何条目 一旦你设置了调度器,你就不需要运行 schedule:run

以上是关于Laravel 队列:在主机中永远运行的工作?的主要内容,如果未能解决你的问题,请参考以下文章

等待本地主机...永远不会结束

Docker + Laravel 队列:工作

使用 Supervisor 运行多个 Laravel 队列工作者

Laravel 队列只运行一项工作

Laravel Queue Worker、RabbitMQ 和远程生成的运行作业

Laravel 4 - CSRF 令牌永远不会改变