Laravel 5任务调度程序(用于邮件队列)不工作


Laravel 5 task scheduler (for mail queue) not working

我试图让Laravel自动处理电子邮件队列,但无法让任务调度程序正常工作。问题是:

我已经在数据库表和Kernel.php中成功地获得了工作:

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

在远程服务器上,我在项目文件夹下运行了这个命令:

* * * * * php artisan schedule:run >> /dev/null 2>&1

但是调度程序仍然拒绝工作,因为作业仍然保留在表中。如果我手动运行

artisan queue:work

然后发送电子邮件。

我做错了什么?非常感谢!

首先,我建议不要使用laravel的命令调度程序。

使用laravel的任务调度器的优点和缺点:

专业

您的cron任务将嵌入到代码中。因此,如果您更改了服务器,就不需要记住您拥有的所有cron任务。

缺点

假设您还有其他几个cron任务。任务T1每分钟运行,但任务T2每天运行,而任务T3每周二运行。现在,为了检查这一点,您将运行一个守护进程,它将检查您的每分钟是否有任何任务在队列计划中。此外,您的队列应尊重每个作业及其各自的时间安排。

相反,您可以为每个任务创建单独的命令。并为他们运行cron作业。

但是,即使你想做你已经在做的事情,或者想知道为什么你的cron任务没有运行,下面是你忘记的"在你的项目目录中运行artisan命令"。

* * * * * cd path_to_your_laravel_project & php artisan schedule:run