Cron定时任务应用到Thinkphp

2586
  1. 安装crontab:

  2. yum install crontabs

  3. 关于cron的一些命令:

  4. /sbin/service crond start //启动服务  

  5.  

  6. /sbin/service crond stop //关闭服务  

  7.  

  8. /sbin/service crond restart //重启服务  

  9.  

  10. /sbin/service crond reload //重新载入配置  

  11. 查看crontab服务状态:service crond status

  12. 手动启动crontab服务:service crond start

  13. 查看crontab服务是否已设置为开机启动,执行命令:ntsysv

  14. 加入开机自动启动: chkconfig level 35 crond on

  15. crontab命令介绍

  16. 功能说明:设置计时器。  

  17.  

  18.  

  19. 语  法:crontab [-u <用户名称>][配置文件] crontab [-u <用户名称>][-elr]  

  20.  

  21.  

  22.  

  23. 补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:  

  24.  

  25. Minute Hour Day Month DayOFWeek Command  

  26.  

  27.  

  28.  

  29. 参  数:  

  30.  

  31. -e  编辑该用户的计时器设置。  

  32.  

  33. -l  列出该用户的计时器设置。  

  34.  

  35. -r  删除该用户的计时器设置。  

  36.  

  37. -u<用户名称>  指定要设定计时器的用户名称。  

  38. crontab 格式

  39. 基本格式:  

  40.  

  41. * * * * *  command  

  42.  

  43. 分 时 日 月 周  命令  

  44.  

  45.  

  46.  

  47. 1列表示分钟159 每分钟用*或者*/1表示  

  48.  

  49. 2列表示小时1230表示0点)  

  50.  

  51. 3列表示日期131  

  52.  

  53. 4 表示月份112  

  54.  

  55. 5列标识号星期060表示星期天)  

  56.  

  57. 6列要运行的命令  

  58.  

  59.  

  60.  

  61. # Use the hash sign to prefix a comment  

  62.  

  63. # +—————- minute (0 – 59)  

  64.  

  65. # | +————- hour (0 – 23)  

  66.  

  67. # | | +———- day of month (1 – 31)  

  68.  

  69. # | | | +——- month (1 – 12)  

  70.  

  71. # | | | | +—- day of week (0 – 7) (Sunday=0 or 7)  

  72.  

  73. # | | | | |  

  74.  

  75. # * * * * * command to be executed  

  76. crontab文件的一些例子:

  77. 30 21 * * * /etc/init.d/nginx restart  

  78.  

  79. 每晚的21:30重启nginx  

  80.  

  81.  

  82.  

  83. 45 4 1,10,22 * * /etc/init.d/nginx restart  

  84.  

  85. 每月11022日的4 : 45重启nginx  

  86.  

  87.  

  88.  

  89. 10 1 * * 6,0 /etc/init.d/nginx restart  

  90.  

  91. 每周六、周日的1 : 10重启nginx  

  92.  

  93.  

  94.  

  95. 0,30 18-23 * * * /etc/init.d/nginx restart  

  96.  

  97. 每天18 : 0023 : 00之间每隔30分钟重启nginx  

  98.  

  99.  

  100.  

  101. 0 23 * * 6 /etc/init.d/nginx restart  

  102.  

  103. 每星期六的11 : 00 pm重启nginx  

  104.  

  105.  

  106.  

  107. * */1 * * * /etc/init.d/nginx restart  

  108.  

  109. 每一小时重启nginx  

  110.  

  111.  

  112.  

  113. * 23-7/1 * * * /etc/init.d/nginx restart  

  114.  

  115. 晚上11点到早上7点之间,每 隔一小时重启nginx  

  116.  

  117.  

  118.  

  119. 0 11 4 * mon-wed /etc/init.d/nginx restart  

  120.  

  121. 每月的4号与每周一到周三 11点重启nginx  

  122.  

  123.  

  124.  

  125. 0 4 1 jan * /etc/init.d/nginx restart  

  126.  

  127. 一月一号的4点重启nginx  

  128.  

  129.  

  130.  

  131. */30 * * * * /usr/sbin/ntpdate 210.72.145.20  

  132.  

  133.  

  134. 每半小时同步一下时间  

  135. 应用到thinkphp

  136. 首先你得把要定时执行的功能代码写到Action中。或者可以用URL访问之后可以执行也行。

  137. 例如我把定时每天遍历订单是否有成交额的更新代码放在 Order/update_status 下。

  138. 而我的项目访问地址是www.jieqinwang.com 即:这个功能的代码执行路径为:http://www.jieqinwang.com/XXX/xxx

  139. 得到这个路径之后就可以去liunx去配置cron了。

  140. crontab -e 进入任务列表。

  141. 按下I键进入编辑模式,然后添加一条任务。

  142. 比如我想每天中午12点执行一次我刚刚写的那段代码

  143. 就添加新的一行  0 12 * * *  curl http://www.jieqinwang.com/XXX/xxx

  144. 然后按Esc键退出编辑模式,再输入:wq回车。保存退出。

  145. 这样我们就添加了一个定时任务。可以利用crontab -l来查看任务列表是否已经含有。

  146. 最后一步,因为这样添加进行有可能不会立即生效。我们重启一下cron服务就可以了。

  147. 重启服务命令:/sbin/service crond restart

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

 转载于: Cron定时任务应用到Thinkphp