Laravel 5.5中的计划无法正常工作

时间:2019-06-13 10:44:31

标签: laravel cron laravel-5.5

我在命令文件夹中创建了一个名为“ Tournaments”和$ signature ='tournament:start'的命令文件,然后使用以下命令在Kernal.php文件中对其进行了更新:

$schedule->command('tournament:start')->everyFiveMinutes()->appendOutputTo(storage_path('logs/examplecommand.log'));

然后像这样在服务器中设置cron作业:

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

但是不执行查询。可能是什么问题呢 ?我在计划过程中错过了什么吗?

2 个答案:

答案 0 :(得分:0)

在cronfile中插入的正确行是:

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

此外,请确保您的命令已正确注册:https://laravel.com/docs/5.5/artisan#registering-commands

答案 1 :(得分:0)

因为您的代码看起来不错

因此它必须在App\Console\Kernel.php函数下的schedule

/**
 * Define the application's command schedule.
 *
 * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
 * @return void
 */
protected function schedule(Schedule $schedule)
{
     $schedule->command('tournament:start')
    ->everyFiveMinutes()
    ->appendOutputTo(storage_path('logs/examplecommand.log'));

     $schedule->call(function () {
        logger()->info(now());
    })->cron('* * * * *');

}

因此tournament:start将每隔五分钟运行一次

但是由于您需要更改服务器中的cron条目以检查每分钟

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

这是我服务器中的cron条目

enter image description here

这是我的计划功能

/**
 * Define the application's command schedule.
 *
 * @param  \Illuminate\Console\Scheduling\Schedule  $schedule
 * @return void
 */
protected function schedule(Schedule $schedule)
{
     $schedule->command('generate:report')
             ->hourly()
             ->between('5:00', '23:00');

    $schedule->command('sendEmail:deviceOffline')
             ->everyThirtyMinutes()
             ->between('5:00', '23:00');

}

所以generate:report将在上午5:00至晚上11 :: 00 PM每小时运行一次

sendEmail:deviceOffline将在5:00 AM到11 :: 00 PM之间每隔30分钟运行一次