使用Cron Job的Laravel Scheduler

时间:2016-05-19 08:34:33

标签: php laravel cron

我正在使用带有php5的larave 5.1,我尝试创建我的cron作业以及时删除未付的发票,但我测试它以打印用户日志以帮助我知道该作业正在运行。

这是我的app / Console / Kernel.php

protected $commands = [
    \App\Console\Commands\Inspire::class,
    \App\Console\Commands\RemoveUnpaidInvoice::class,
];

protected function schedule(Schedule $schedule)
{
    $schedule->command('removeUnpaidInvoice')->everyMinute();
    // $schedule->command('inspire')->hourly();
}

这是我的RemoveUnpaidInvoice类:

public function handle()
{
    UserLog::create([
        'user_id' => '3',
        'title' => 'Cron Testing',
        'log' => 'Time : ' . date('H:i:s')
    ]);
}

我的文件完成后,我在终端运行此命令来运行我的cron:

php artisan schedule:run

在我运行计划artisan命令后,我的终端显示此消息:

Running scheduled command: '/usr/bin/php5' 'artisan' removeUnpaidInvoice > '/dev/null' 2>&1 &

我认为这是有效的,然后我检查我的数据库以查看是否已创建用户日志,并且已创建,用户日志通过cron添加新内容。

但问题是,我等了一分钟,没有添加用户日志,等待2分钟,3分钟甚至更多,没有其他用户日志添加到我的数据库中?

如何解决?我犯了错误吗?

1 个答案:

答案 0 :(得分:1)

Starting sheduler

  

以下是您需要添加到服务器的唯一Cron条目:

     

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

     

这个Cron每分钟都会调用Laravel命令调度程序。然后,> Laravel评估您的计划任务并运行到期的任务。

您需要启动cron,而无需在控制台中运行php artisan schedule:run