Cron定时任务应用到Thinkphp

来源:互联网 发布:图片手机标记软件 编辑:程序博客网 时间:2024/05/19 23:03
  1. 首先我们先了解一下Crontab命令,最后再给大家介绍如何应用到Thinkphp.如果你已经了解过Crontab命令,可以拉到最后看如何应用到Thinkphp
  2.  安装crontab:
  3.  
  4. yum install crontabs
  5.  
  6.  
  7.  关于cron的一些命令:
  8.  
  9.  /sbin/service crond start //启动服务  
  10.   
  11.  /sbin/service crond stop //关闭服务  
  12.   
  13.  /sbin/service crond restart //重启服务  
  14.   
  15.  /sbin/service crond reload //重新载入配置  
  16.  查看crontab服务状态:service crond status
  17.  
  18.  手动启动crontab服务:service crond start
  19.  
  20.  查看crontab服务是否已设置为开机启动,执行命令:ntsysv
  21.  
  22.  加入开机自动启动: chkconfig level 35 crond on
  23.  
  24.  
  25. crontab命令介绍
  26.  
  27.  功能说明:设置计时器。  
  28.    
  29.    
  30.  语  法:crontab [-<用户名称>][配置文件] crontab [-<用户名称>][-elr]  
  31.    
  32.    
  33.    
  34.  补充说明:cron是一个常驻服务,它提供计时器的功能,让用户在特定的时间得以执行预设的指令或程序。只要用户会编辑计时器的配置文件,就可以使 用计时器的功能。其配置文件格式如下:  
  35.    
  36.  Minute Hour Day Month DayOFWeek Command  
  37.    
  38.    
  39.    
  40.  参  数:  
  41.    
  42.  -e  编辑该用户的计时器设置。  
  43.    
  44.  -l  列出该用户的计时器设置。  
  45.    
  46.  -r  删除该用户的计时器设置。  
  47.    
  48.  -u<用户名称>  指定要设定计时器的用户名称。  
  49.  
  50.  
  51.  
  52.  
  53. crontab 格式
  54.  
  55.  基本格式:  
  56.    
  57.  * * * * *  command  
  58.    
  59.  分 时 日 月 周  命令  
  60.    
  61.    
  62.    
  63.  1列表示分钟159 每分钟用*或者*/1表示  
  64.    
  65.  2列表示小时1230表示0点)  
  66.    
  67.  3列表示日期131  
  68.    
  69.  4 表示月份112  
  70.    
  71.  5列标识号星期060表示星期天)  
  72.    
  73.  6列要运行的命令  
  74.    
  75.    
  76.    
  77.  # Use the hash sign to prefix a comment  
  78.    
  79.  # +—————- minute (0 – 59)  
  80.    
  81.  # | +————- hour (0 – 23)  
  82.    
  83.  # | | +———- day of month (1 – 31)  
  84.    
  85.  # | | | +——- month (1 – 12)  
  86.    
  87.  # | | | | +—- day of week (0 – 7) (Sunday=0 or 7)  
  88.    
  89.  # | | | | |  
  90.    
  91.  # * * * * * command to be executed  
  92.  
  93.  
  94.  
  95.  
  96. crontab文件的一些例子:
  97.  
  98.  
  99.  30 21 * * * /etc/init.d/nginx restart  
  100.    
  101.  每晚的21:30重启nginx  
  102.    
  103.    
  104.    
  105.  45 4 1,10,22 * * /etc/init.d/nginx restart  
  106.    
  107.  每月11022日的4 : 45重启nginx  
  108.    
  109.    
  110.    
  111.  10 1 * * 6,0 /etc/init.d/nginx restart  
  112.    
  113.  每周六、周日的1 : 10重启nginx  
  114.    
  115.    
  116.    
  117.  0,30 18-23 * * * /etc/init.d/nginx restart  
  118.    
  119.  每天18 : 0023 : 00之间每隔30分钟重启nginx  
  120.    
  121.    
  122.    
  123.  0 23 * * 6 /etc/init.d/nginx restart  
  124.    
  125.  每星期六的11 : 00 pm重启nginx  
  126.    
  127.    
  128.    
  129.  * */1 * * * /etc/init.d/nginx restart  
  130.    
  131.  每一小时重启nginx  
  132.    
  133.    
  134.    
  135.  * 23-7/1 * * * /etc/init.d/nginx restart  
  136.    
  137.  晚上11点到早上7点之间,每 隔一小时重启nginx  
  138.    
  139.    
  140.    
  141.  0 11 4 * mon-wed /etc/init.d/nginx restart  
  142.    
  143.  每月的4号与每周一到周三 11点重启nginx  
  144.    
  145.    
  146.    
  147.  0 4 1 jan * /etc/init.d/nginx restart  
  148.    
  149.  一月一号的4点重启nginx  
  150.    
  151.    
  152.    
  153.  */30 * * * * /usr/sbin/ntpdate 210.72.145.20  
  154.    
  155.    
  156.  每半小时同步一下时间  
  157.  
  158.  
  159.  应用到thinkphp
  160.  首先你得把要定时执行的功能代码写到Action中。或者可以用URL访问之后可以执行也行。
  161.  例如我把定时每天遍历订单是否有成交额的更新代码放在 Order/update_status 下。
  162.  而我的项目访问地址是www.jieqinwang.com 即:这个功能的代码执行路径为:http://www.jieqinwang.com/XXX/xxx
  163.  得到这个路径之后就可以去liunx去配置cron了。
  164.  
  165. crontab -进入任务列表。
  166.  按下I键进入编辑模式,然后添加一条任务。
  167.  比如我想每天中午12点执行一次我刚刚写的那段代码
  168.  就添加新的一行  0 12 * * *  curl http://www.jieqinwang.com/XXX/xxx
  169.  然后按Esc键退出编辑模式,再输入:wq回车。保存退出。
  170.  这样我们就添加了一个定时任务。可以利用crontab -l来查看任务列表是否已经含有。
  171.  最后一步,因为这样添加进行有可能不会立即生效。我们重启一下cron服务就可以了。
  172.  重启服务命令:/sbin/service crond restart 
  173.  大功告成!如果还有哪里不明白的地方可以发表评论,我会尽快回复的。
0 0
原创粉丝点击