我已经在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上,而该命令仍在手动运行,只是自动化部分无法运行。
如果您手动运行,它将只运行一次。当您将命令放在cron选项卡中时,cronjob将每分钟运行一次,因此您的电子邮件命令将每分钟触发一次。
cron所做的每分钟运行一次schedule:run
,与您手动执行的操作相同。
因此将该行添加到您的crontab中,您将每分钟收到一封电子邮件