首页 > 代码库 > PHP 定时任务
PHP 定时任务
之前Java的定时任务,可以在Linux下配置/etc/crontab定时发起请求,但是这样就会导致代码管理的不一致性。个人还是倾向利用Spring的quartz配置,这样代码都统一在一起管理,结构和功能都更清晰和统一。而是用crontab的方法,虽说手动也能触发可以对一些异常很好地补偿,但是也毕竟等于暴露了一个安全隐患,个人认为还是有斟酌余地。
说了这么多题外话,各位就自行根据实际选用方案了。这里主要说说Linux的crontab。顺便提一下,据说,在PHP实现定时任务,这是首选方案。
crontab文件的位置:
/etc/crontab
命令:
cd /etcvim crontab
可以清晰看到配置的提示说明
# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed
5个参数时间参数,从左往右,分别是 分钟、小时、日、月、星期,其中(数字/* )代表 每(数字)单位执行一次。例子:
#每分钟执行一次的两种实现#分钟为1则执行1 * * * * #每1分钟执行一次1/* * * * *
每天0时0点请求一次
0 0 * * * root curl http:ding.shi.renwu
或者
0 0 * * * root curl "http:ding.shi.renwu"
这里提醒一下,URL传递参数,不能使用&,因为&在Linux下另有其义,用&连接参数会造成参数丢失。解决方法有两种:
1,使用转义字符,\& 代替 &
2,url用双引号包围
好了,就是这么简单,配置完成。
想查看定时任务是否有执行,可以到日志文件查看,位置是:
/var/log/cron
cd /var/logtail -f cron
这个日志,只记录定时执行情况,不显示执行后的返回结果。
想查看请求调用的情况,可在调试阶段,直接使用curl命令检查方法是否正确执行
curl "http:ding.shi.renwu"
这个跟在浏览器直接输入请求还是很不同的,像上文提到的&字符问题,浏览器输入链接没有问题,但在Linux下调用必然出错。
还有curl可以用 -d 选项 POST 参数等,这些都不是浏览器直接输入可以完成。
好了,基本的配置和一些小坑就介绍到这里,谢谢浏览~!~
PHP 定时任务
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。