前言
ThinkPHP 的自定义命令行不仅可以用来创建一些类,或做一些其他清除缓存的操作,其实还可以拿来开发成项目的定时任务。手册里没有直接说,此功能可以拿来这般使用,也是自己在实际项目中的一些变通使用。
任务准备
Linux 服务器是公司的首先,在 Linux 上实现定时任务也是比较容易的,通过指令 crontab 来实现。
首先,先看 ThinkPHP 5.0 方面是怎么实现的。
application/command.php 是自定义命令行的配置文件,告诉 ThinkPHP 文件路径。
创建文件 application/command/Test.php,该文件是需要执行的命令。
application/command.php
<?
application/command/Test.php
<?
$this->setName() 是设置运行时命令行的名称,setDescription() 是对该命令行做一个说明。
这里通过 php think 指令来查看已有的 command。
准备完了,再下一步进行测试执行。
执行任务
在项目的根目录输入以下语句:
php think test
说明我们的代码是正确的。
定时设置
接下来,我们要在 Linux 服务器上做一些设定,来完成定时。
crontab -e
将需要的命令加入到定时任务里。
*/1 * * * * cd /home/wwwroot/ThinkPHP5.0/ && php think test #每分钟执行
启动定时服务
/sbin/service crond start
命令已经加入了,我们在 Linux 上测试一下指令
代码是一致的,个人建议,定时任务最后要用到数据库进行做任务日志,如此我们可以观察到,任务的执行与否。
注意
如果你的自定义方法里面需要执行一些外部的类,因为外部类可能会引用系统的一些类,有时候可能会出现类似这种莫名的问题
建议你在需要执行的类里,加上构造函数:
public
-- 完结 --