thinkphp5.1+Linux定时任务布置开发 转

转自:http://www.sosphp.cn/article/detail/89.html

定时任务功能逻辑:Linux系统定时任务,定时执行,执行时触发TP写的程序,来完成想要处理数据的目的

那么首先,我先将定时任务的整体划分为几个步骤:

  1. 在TP内创建对应需要执行的程序
  2. 在Linux系统内写入定时任务
  3. 定时任务执行并测试查看执行结果

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

点赞

发表回复

电子邮件地址不会被公开。必填项已用 * 标注