一 、创建Command文件
php artisan make:console DataSync
创建app/Console/Commands 下创建RefreshToken.php
取一个名字
protected $signature = 'datasync';
添加描述
protected $description = 'sync data';
在 handle() 方法中实现功能
public function handle() { Log::info('同步数据'); }
二、在Kernel.php 文件中注册
//Commands\Inspire::class, Commands\DataSync::class, ]; protected function schedule(Schedule $schedule) { $schedule->command('datasync') ->everyMinute(); }
三、新建cron.txt文件
文件内容:
* * * * * /usr/local/php/bin/php /data/wwwroot/test/artisan schedule:run 1>> /dev/null 2>&1
不需要重启cron服务,因为系统每分钟都会读一遍/var/spool/cron目录下的文件。
如果发现按照如下配置还是不能执行的话,可以用以下方法排除问题:
看一下命令有没有使用绝对路径,比如这里使用/usr/local/php/bin/php而不是php,使用/data/wwwroot/test/artisan而不是artisan。
要注意前面的PHP部分对应你使用的PHP版本目录。
默认是root用户执行,会存在写入日志冲突情况,可参考 crontab指定用户执行。
四、用命令开启任务
在终端中项目目录下(Linux 环境)
告诉crontab 文件名:
crontab cron.txt
开始定时任务
crontab -l
或许之后你要结束任务
crontab -r