版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34827048/article/details/75144249
日常开发中可能需要定时去执行一些东西,例如定时检查数据库状态是否更新,定时插入数据,这个时候需要借助Linux的crontab 来定时执行
- 首先执行
crontab -e
- 添加代码
* * * * * php 项目的路径/artisan schedule:run >> /dev/null 2>&1
* 就是代表 (分 时 日 月 周)
- 注意:/usr/local/bin/php 这个是php的根目录跟路径 后面是项目路径
* * * * * /usr/local/bin/php /Users/yanbin/workspace/www/brow/artisan schedule:run >> /dev/null 2>&1
crontab -l 可以列出当前的定时任务
定义调度
- 你可以在App\Console\Kernel类的schedule方法中定义所有调度任务。
<?php
namespace App\Console;
use DB;
use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
class Kernel extends ConsoleKernel{
/**
* 定义Artisan命令
*
* @var array
*/
protected $commands = [
App\Console\Commands\Inspire::class,
//通过命令执行可以执行定时
App\Console\Commands\PushEmailCampaign::class,
];
/**
* 定义应用的命令调度
*
* @param \Illuminate\Console\Scheduling\Schedule $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{
$schedule->call(function () {
Log::info('任务调度');
})->everyMinute();
//Log::useFiles(storage_path('logs/emailtrigger'.date('Ymd').'.log'));
// Log::info('emailtrigger log: '.'log');
//每分钟调用邮件营销活动检查命令,处理满足条件的邮件营销活动任务推送
$schedule->command('emailcampaigns:push')->everyMinute();
}
}
schedule方法是两种定义定时的方法,最后一个是通过command命令可以去执行(测试一下就知道了)
记得在这里加入:protected $commands = [];
常用:
->cron('* * * * *'); 在自定义Cron调度上运行任务
->everyMinute(); 每分钟运行一次任务
->everyFiveMinutes(); 每五分钟运行一次任务
->everyTenMinutes(); 每十分钟运行一次任务
->everyThirtyMinutes(); 每三十分钟运行一次任务
->hourly(); 每小时运行一次任务
->daily(); 每天凌晨零点运行任务
->dailyAt('13:00'); 每天13:00运行任务
->twiceDaily(1, 13); 每天1:00 & 13:00运行任务
->weekly(); 每周运行一次任务
->monthly(); 每月运行一次任务
->monthlyOn(4, '15:00'); 每月4号15:00运行一次任务
->quarterly(); 每个季度运行一次
->yearly(); 每年运行一次
->timezone('America/New_York'); 设置时区
一篇诗,一斗酒,一曲长歌,一剑天涯