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

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

󰅡 技术学院   󰃄 2022-04-25   
转载出处:本文章(教程)为本站原创,未经许可、禁止转载!

今天因为需求的问题,需要在Linux的基础下做一个定时任务,因为也是第一次尝试,很幸运的成功了,所以记录下来,分享给大家,也希望对有需要的同学有帮助。

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

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

  1. 在TP内创建对应需要执行的程序

  2. 在Linux系统内写入定时任务

  3. 定时任务执行并测试查看执行结果



第一步:程序部分创建

在TP5.1的开发手册里,有一项关于“命令行”的介绍,我们这里使用的便是命令号方面的操作。

image.png

如果有还不清楚这块的,可以去先去官方文档学习了解一下

另外还有就是要知道命令行在TP中所对应的文件,这个在文档中虽然介绍的不是很细致,但是通过查阅资料也是可以理解的

image.png

command.php 便是 "命令行定义文件",是在application(也叫app)目录下的

因为我考虑到后期可能会要创建不止一个定时任务,所以我想将所有的定时任务文件放在一起,故使用了下面的命令

php think make:command command/InquiryPool

然后还要在app/command.php里面加上下图命令才可以正常使用

return [
    'appcommandInquiryPool'
];

接着往下看

image.png


执行过上面的命令以后,会自动创建command下的InquiryPool.php文件,这里边会自动生成两个方法,一个是configure,一个是execute

configure--主要用于定义“命令的名称”以及“命令的描述”,方便你在运行php think 时调用哪个命令,比如该例子:php think test,

$this->setName('test')->setDescription('定时任务');

我们设置过configure里的内容后,在执行php think命令,你会发现在command命令里,就会出现你创建的这个命令名称

image.png



做到这里---就表示我们可以调用这个test命令了,但是也要注意我在上面的截图中圈住了一句话:

image.png

这句话的意思就是说,我执行 php think test命令时,就会自动运行execute方法,下面给大家截图演示一下:


GIF.gif

这里有一个重点需要理解的---为什么说创建了这个command命令,就可以去做定时任务了,因为我们是在定时任务里去触发这个php think test的命令,然后test命令执行时又会自动去执行execute方法,从而达到数据处理的目的,这就是核心思想。




第二步:Linux定时任务设置


先使用crontab -l 查看一下目前已经存在的定时任务,这里不再做展示。

然后可以直接使用crontab -e 来编辑添加想要做的定时任务


image.png

表示每10分钟执行一次,且暂时记录在/www/wwwroot/order/runtime/message/2020.log下

这样定时任务就算完成了。


第三步:查看2020.log文件,进行验证,哦,对了,这里还要注意一点,2020.log文件需要提前创建,定时任务是不会自动创建的,换句话说就是路径一定要存在。



至于你使用定时任务要做什么样的数据处理,我想你应该知道要在哪里进行操作了吧。



吐槽区


1 条评论
  一个好像很凶很凶的神秘人


超赞的一个分享!!!
  2021-10-15



󰄫
󰆣
󰆦