在Laravel中安排工作

时间:2017-09-20 10:24:13

标签: php laravel laravel-5

我在laravel中创建了一个命令" update:date"和" php artisan list"成功列出它。我能够使用" php artisan update:date"

执行它

Kernel.php:

    protected $commands = [
    'Snuba\Console\Commands\Inspire',
    'Snuba\Console\Commands\UpdateDate'
   ];


protected function schedule(Schedule $schedule)
{
    $schedule->command('inspire')
             ->hourly();

    $schedule->command('update:date')
        ->everyMinute();

}

我将其配置为按照上面给出的每分钟运行。我还需要配置其他什么吗?我认为laravel应该在ubuntu服务器上自动将其注册为cron任务。

5 个答案:

答案 0 :(得分:0)

我刚注意到:

Call to undefined method Illuminate\Console\Scheduling\Event::everyMinute()

我按照文档认为这是一个有效的方法调用。我发现everyMinute()在laravel 5+中不再有效。所以,我改用了cron表达式。

答案 1 :(得分:0)

  

我认为laravel会自动将其注册为cron任务   ubuntu服务器。

不,你必须像以下一样开始:

* * * * * php /path-to-your-project/artisan schedule:run >> /dev/null 2>&1

启动计划程序

使用调度程序时,只需将以下Cron条目添加到服务器即可。如果您不知道如何将Cron条目添加到服务器,请考虑使用Laravel Forge等可以为您管理Cron条目的服务

Reference

Another Answer

答案 2 :(得分:0)

Laravel的命令调度程序允许您在Laravel本身内流畅而有表现地定义您的命令调度。有关详细信息,请访问以下链接laravel task scheduling

答案 3 :(得分:0)

如果您有权访问SSH 运行命令crontab -e 插入这一行:

          • php / path-to-your-project / artisan schedule:run>> / dev / null 2>& 1

将按指定的时间运行所有指定的crons。

如果你有cpanel,那么在crontab下添加命令

上面的行

答案 4 :(得分:0)

  1. 如果-> everyMinute不存在,请使用-> cron('* / 1 * * * * *')设置每分钟。或重写类laravel.com/api/5.x/Illuminate/Console/Scheduling/Event.html
  2. 如果cron作业不起作用,请运行命令 crontab -e 并添加没有单引号的该行
    '* * * * * php / path-to-your-project / artisan schedule:run >> / dev / null 2>&1'
  3. 完成此操作后,我认为它运行完美。