Cron定时任务应用到Thinkphp

首先我们先了解一下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

大功告成!如果还有哪里不明白的地方可以发表评论,我会尽快回复的。

你可能感兴趣的:(Cron定时任务应用到Thinkphp)