1、简述

本文方法是利用Linux的crontab定时任务来协助实现Laravel调度

2、创建控制台命令

php artisan make:console TestTask

以上命令执行完,会生成文件app/Console/Commands/TestTask.php

3、修改 TestTask.php 文件

控制台命令名称

protected $signature = 'testTask';

控制台命令描述

protected $description = '测试定时任务';

控制台命令功能实现

/**
 * Execute the console command.
 *
 * @return mixed
 */
public function handle()
{
    Log::info('这是定时任务,每分钟写一次');
}

4、修改app/Console/Kernel.php

注册控制台命令

protected $commands = [
    Commands\TestTask::class, // 测试定时任务
]

将控制台命令添加到定时任务

protected function schedule(Schedule $schedule)
{
    $schedule->command('testTask')->everyMinute(); // 每分钟执行一次定时任务

}

5、添加 Linux 定时任务

手动执行自定义命令

php artisan testTask

添加 crontab 定时任务

执行命令:

sudo crontab -e

添加以下代码:

* * * * * php /var/www/invest/artisan schedule:run >> /dev/null 2>&1

重启 crontab 服务

service crond restart

命令说明

Linux 系统将会每分钟执行一次php artisan schedule:run命令,而 schedule 又管理着我们定义的定时任务。至此,我们的定时任务便可以正常工作了。

转载于:https://my.oschina/zobeen/blog/2250160

更多推荐

【Laravel】Laravel 定时任务 Schedule