zoukankan      html  css  js  c++  java
  • Tinkphp定时发布文章的教程

    第一步:在文章表中加一个字段,用来保存定时发布的时间

    假定我把这个字段设为 push_time 默认为 0

    第二步:写一个方法来检查文章列表,把文章列表到时间的文章改为发布状态

    1 //定时发布文章
    2     public function time_push_news()
    3     {
    4         $map['status'] = 0;//还是草稿状态
    5         $map['push_time'] = array('BETWEEN',array(1,mktime())); //凡是大于0小于现在的都是到时间应该发布的文章
    6         $result = M("news")->where($map)->setField("status",1); //改为发布状态
    7     }

    第三步:设置定时任务

    首先我们先了解一下Crontab命令,最后再给大家介绍如何应用到Thinkphp.如果你已经了解过Crontab命令,可以拉到最后看如何应用到Thinkphp

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