百度搜索过相关的php计划任务的资料,特别是搜索thinkphp的计划任务,目前能明确实现的都是被动式的,就是通过tp3.2自带的计划任务类实现,通过挂钩子的形式,用户访问网站的时候就执行计划任务,这种不是我们需要,我们需要的是全自动,而且配置方便的。在GitHub上搜索的php计划任务有点脱离的tp5框架,如果用的话,需要加载tp5的底层类才行。
我实现的方法就是利用tp5命令行的功能,它能加载底层而且可以让框架在命令行上运行,这样最后部署的时候都可以很容易适应windows和linux,另外一个就是引用了linux的crontab思想,我把配置都放到同一个项目文件下面,这样就不需要为每一个计划任务去设置系统计划配置了。
第一步:设置计划任务的配置
在application\config.php下面添加这个配置,熟悉crontab的朋友就觉得这个格式是不是很像。
/*每分钟*/
/*每小时 某分*/
/*每天 某时:某分*/
/*每周-某天 某时:某分 0=周日*/
/*每月-某天 某时:某分*/
/*某月-某日 某时-某分*/
/*某年-某月-某日 某时-某分*/
'sys_crond_timer' => array('*', '*:i', 'H:i', '@-w H:i', '*-d H:i', 'm-d H:i
第二步:计划任务的核心代码。这一步已经帮大家实现了,大家需要理解的就是tp5的命令行实现就可以。在application\common\lib下面创建Crond.php文件。复制下面代码</