我在命令文件夹中创建了一个名为“ 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
但是不执行查询。可能是什么问题呢 ?我在计划过程中错过了什么吗?
答案 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条目
这是我的计划功能
/**
* 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分钟运行一次