转自:http://www.sosphp.cn/article/detail/89.html
定时任务功能逻辑:Linux系统定时任务,定时执行,执行时触发TP写的程序,来完成想要处理数据的目的
那么首先,我先将定时任务的整体划分为几个步骤:
- 在TP内创建对应需要执行的程序
- 在Linux系统内写入定时任务
- 定时任务执行并测试查看执行结果
command.php 便是 "命令行定义文件",是在application(也叫app)目录下的
创建文件
php think make:command command/CronTask
然后还要在app/command.php里面加上下图命令才可以正常使用
return [ 'app\command\CronTask' ];
执行过上面的命令以后,会自动创建command下的CronTask.php文件,这里边会自动生成两个方法,一个是configure,一个是execute
configure--主要用于定义“命令的名称”以及“命令的描述”,方便你在运行php think 时调用哪个命令,比如该例子:php think test,
$this->setName('test')->setDescription('定时任务');
我们设置过configure里的内容后,在执行php think命令,你会发现在command命令里,就会出现你创建的这个命令名称
这句话的意思是执行 php think test命令时,就会自动运行execute方法
这里有一个重点需要理解的---为什么说创建了这个command命令,就可以去做定时任务了,因为我们是在定时任务里去触发这个php think test的命令,然后test命令执行时又会自动去执行execute方法,从而达到数据处理的目的,这就是核心思想。
第二步:Linux定时任务设置
先使用crontab -l 查看一下目前已经存在的定时任务,这里不再做展示。
然后可以直接使用crontab -e 来编辑添加想要做的定时任务,具体的时间设置可以参考上一篇文章 http://www.sosphp.cn/article/detail/88.html
第三步:查看2020.log文件,进行验证,哦,对了,这里还要注意一点,2020.log文件需要提前创建,定时任务是不会自动创建的,换句话说就是路径一定要存在
以下非转载
备注(亲测)
需要注意的一点是,tp的主入口文件在public文件夹下,但think文件是在根目录下的,所以不能直接运行php think 加任务名来执行任务,而是需要写成
php E:\xampp\htdocs\xxx\think taskname>>xxx.log