您的位置:首页 > 编程语言 > PHP开发

crontab wget命令定时执行thinkphp的控制器实现定时任务

2014-07-28 15:16 453 查看
背景:项目里需要配置个定时任务扫描订单数据表里的数据,将快要到期的订单标记出来,写到系统消息提醒表里。以前配置过crontab直接执行php脚本,然后一路全面向过程的方式将业务实现到底。最近项目用了thinkphp框架,想着框架对于数据操作封装的便利,就不想再单独下php脚本文件运行了。但是,在项目里写的controller控制器文件,配置到crontab里new之后调用对应方法完全没效果。折腾了一些时间,发现没弄好后,就果断放弃了,想到linux的命令wget。于是开始配置wget,将地址设为要执行的controller对应的地址,最终这种方式是可以的。但是,必须记得的是任务运行的controller最好继承一个基类,然后在基类的thinkphp初始函数_initialize里写上验证部分,这样可以尽量避免外部访问(可以验证访问ip是不是本机或者访问地址里带上username和pwd之类的)。

以上属于业务的说明,下面直接上代码
01 * * * * root wget -t 1 -T 0 -q --spider "http://localhost/tptest/index.php?c=timetask&a=get_sys_warm&visit_name=123456&visit_pwd=123456"
其中用到了wget命令几个参数:

-t : 连接次数(失败后重连)

-T: 连接时间设置(0不会超时)

-q: 安静模式 (不输出讯息)

--spider: 不下载任何资料

备注:有点问题的是这种属于web形式,虽然在访问的控制器里有ip和秘钥验证,但不确定会不会有什么安全隐患。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: