Laravel CRON仅通过命令手动工作,而不是每分钟触发命令

问题描述 投票:0回答:1

我已经在AWS Ubuntu中拥有laravel 5.4应用程序,在我的项目中,我有一个命令可以为用户发送电子邮件everyMinute。如果运行命令php artisan activity:update可以正常工作,如果我运行php artisan schedule:run,它也运行良好,并且用户仅收到一次该电子邮件。但是,我仍然不知道为什么命令中的everyMinute函数不起作用,并且我无法收到电子邮件everyMinute。我的核心:

protected $commands = [
    Commands\Inspire::class,
    Commands\ActivityDateChecker::class,
    Commands\Test::class
];


protected function schedule(Schedule $schedule)
{
    $schedule->command('activity:update')
             ->everyMinute();
}<br>

[我已经读过一些提到的文章,需要添加在crontab中运行的schedule命令(* * * * * /usr/bin/php /var/www/html/Projectname/artisan schedule:run >> /dev/null 2>&1),当我运行crontab -e我得到:

no crontab for ec2-user - using an empty one
~
~
~
~
~
~
~
~
~
"/tmp/crontab.p7jciw" 0L, 0C

因此,我找到了另一种打开crontab的方法,方法是使用:sudo vi /etc/crontab我得到了这个屏幕:

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               
~                                                                               

当我将这一行(* * * * * /usr/bin/php /var/www/html/Projectname/artisan schedule:run >> /dev/null 2>&1)(复制/粘贴)并尝试保存时,由于用户名的允许,我无法保存它

首先,我是否需要将其嵌入crontab中以使命令在everyMinute上起作用?而我的代码中缺少哪些部分,使其无法自动触发everyMinute?第二:如何使我的命令运行在everyMinute上,而该命令仍在手动运行,只是自动化部分无法运行。

laravel cron scheduled-tasks cron-task
1个回答
1
投票

如果您手动运行,它将只运行一次。当您将命令放在cron选项卡中时,cronjob将每分钟运行一次,因此您的电子邮件命令将每分钟触发一次。

cron所做的每分钟运行一次schedule:run,与您手动执行的操作相同。

因此将该行添加到您的crontab中,您将每分钟收到一封电子邮件

© www.soinside.com 2019 - 2024. All rights reserved.