【问题标题】:Laravel CRON is working only by command manually, and not trigger the command everyMinuteLaravel CRON 只能手动通过命令工作,而不是每分钟触发命令
【发布时间】:2020-02-15 04:51:37
【问题描述】:

我已经在 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 &gt;&gt; /dev/null 2&gt;&amp;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 &gt;&gt; /dev/null 2&gt;&amp;1) (复制/粘贴) 并尝试保存时,由于用户名的权限,我无法保存

首先,我需要将它嵌入到 crontab 中以使命令每分钟都运行吗?我的代码中缺少的部分在哪里使它不会触发自动每分钟?

第二:如何让我的命令每分钟运行一次,而它是手动工作的,只是自动化部分不工作。

【问题讨论】:

    标签: laravel cron scheduled-tasks cron-task


    【解决方案1】:

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

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

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

    【讨论】:

    • 这不是 laravel 问题,这是您服务器上的权限问题。你是服务器管理员吗?获取适当的权限以添加 crontab 条目。
    猜你喜欢
    • 2016-09-19
    • 1970-01-01
    • 2013-10-14
    • 1970-01-01
    • 2015-07-24
    • 1970-01-01
    • 2013-06-08
    • 2016-07-03
    • 1970-01-01
    相关资源
    最近更新 更多