Laravel CRON 只靠手动命令工作,不是每分钟触发一次命令
Laravel CRON is working only by command manually, and not trigger the command everyMinute
我已经在 AWS Ubuntu 中拥有 laravel 5.4 应用程序,在我的项目中,我有一个命令每分钟为用户发送电子邮件。
如果我 运行 命令 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 中添加调度命令 (* * * * * /usr/bin/php /var/www/html/Projectname/artisan schedule:run >> /dev/null 2>&1
) 运行ning,
当我运行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
) (copy/paste) 并尝试保存它时,由于用户名
[ 的许可,我无法保存它=20=]
首先,我是否需要将它嵌入到 crontab 中才能使命令每分钟运行一次?我的代码中的缺失部分在哪里导致它不会每分钟自动触发?
第二:如何让我的命令 运行ning everyMinute,当它手动工作时,只有自动化部分不工作。
如果您手动 运行 它只会 运行 一次。当您将命令放入 cron 选项卡时,cronjob 将每分钟 运行,因此您的电子邮件命令将每分钟触发一次。
cron 所做的是 运行 schedule:run
每分钟,与您手动执行的操作相同。
因此,将此行添加到您的 crontab,您将每分钟收到一封电子邮件
我已经在 AWS Ubuntu 中拥有 laravel 5.4 应用程序,在我的项目中,我有一个命令每分钟为用户发送电子邮件。
如果我 运行 命令 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 中添加调度命令 (* * * * * /usr/bin/php /var/www/html/Projectname/artisan schedule:run >> /dev/null 2>&1
) 运行ning,
当我运行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
) (copy/paste) 并尝试保存它时,由于用户名
[ 的许可,我无法保存它=20=]
首先,我是否需要将它嵌入到 crontab 中才能使命令每分钟运行一次?我的代码中的缺失部分在哪里导致它不会每分钟自动触发?
第二:如何让我的命令 运行ning everyMinute,当它手动工作时,只有自动化部分不工作。
如果您手动 运行 它只会 运行 一次。当您将命令放入 cron 选项卡时,cronjob 将每分钟 运行,因此您的电子邮件命令将每分钟触发一次。
cron 所做的是 运行 schedule:run
每分钟,与您手动执行的操作相同。
因此,将此行添加到您的 crontab,您将每分钟收到一封电子邮件