首先我们先了解一下Crontab命令,最后再给大家介绍如何应用到Thinkphp.如果你已经了解过Crontab命令,可以拉到最后看如何应用到Thinkphp
安装crontab:
yum install crontabs
关于cron的一些命令:
/sbin/service crond start//启动服务
/sbin/service crond stop//关闭服务
/sbin/service crond restart//重启服务
/sbin/service crond reload//重新载入配置
查看crontab服务状态:service crond status
手动启动crontab服务:service crond start
查看crontab服务是否已设置为开机启动,执行命令:ntsysv
加入开机自动启动:chkconfig–level35crond on
crontab命令介绍
功能说明:设置计时器。
语 法:crontab[-u<用户名称>][配置文件]或crontab[-u<用户名称>][-elr]
补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使用计时器的功能。其配置文件格式如下:
MinuteHourDayMonthDayOFWeekCommand
参 数:
-e编辑该用户的计时器设置。
-l列出该用户的计时器设置。
-r删除该用户的计时器设置。
-u<用户名称>指定要设定计时器的用户名称。
crontab格式
基本格式:
** * * *command
分 时 日 月 周 命令
第1列表示分钟1~59每分钟用*或者*/1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
# Use the hash sign to prefix a comment
# +—————- minute (0 – 59)
# | +————- hour (0 – 23)
# | | +———- day of month (1 – 31)
# | | | +——- month (1 – 12)
# | | | | +—- day of week (0 – 7) (Sunday=0 or 7)
# | | | | |
# * * * * * command to be executed
crontab文件的一些例子:
3021***/etc/init.d/nginx restart
每晚的21:30重启nginx。
4541,10,22**/etc/init.d/nginx restart
每月1、10、22日的4:45重启nginx。
101**6,0/etc/init.d/nginx restart
每周六、周日的1:10重启nginx。
0,3018-23***/etc/init.d/nginx restart
每天18:00至23:00之间每隔30分钟重启nginx。
023**6/etc/init.d/nginx restart
每星期六的11:00pm重启nginx。
**/1 * * * /etc/init.d/nginx restart
每一小时重启nginx
*23-7/1***/etc/init.d/nginx restart
晚上11点到早上7点之间,每隔一小时重启nginx
0114*mon-wed/etc/init.d/nginx restart
每月的4号与每周一到周三的11点重启nginx
041jan*/etc/init.d/nginx restart
一月一号的4点重启nginx
*/30 * * * * /usr/sbin/ntpdate210.72.145.20
每半小时同步一下时间
应用到thinkphp
首先你得把要定时执行的功能代码写到Action中。或者可以用URL访问之后可以执行也行。
例如我把定时每天遍历订单是否有成交额的更新代码放在Order/update_status下。
而我的项目访问地址是www.jieqinwang.com即:这个功能的代码执行路径为:http://www.jieqinwang.com/XXX/xxx
得到这个路径之后就可以去liunx去配置cron了。
crontab-e进入任务列表。
按下I键进入编辑模式,然后添加一条任务。
比如我想每天中午12点执行一次我刚刚写的那段代码
就添加新的一行012***curl http://www.jieqinwang.com/XXX/xxx
然后按Esc键退出编辑模式,再输入:wq回车。保存退出。
这样我们就添加了一个定时任务。可以利用crontab-l来查看任务列表是否已经含有。
最后一步,因为这样添加进行有可能不会立即生效。我们重启一下cron服务就可以了。
重启服务命令:/sbin/service crond restart
大功告成!如果还有哪里不明白的地方可以发表评论,我会尽快回复的。