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 大功告成!如果还有哪里不明白的地方可以发表评论,我会尽快回复的。
  • 相关阅读:
    详解Winform多线程编程基本原理
    asp.net 文件夹和文件的创建、删除
    sql server 查询表名,存储过程,列名等
    随机输出数组中的一个数
    C# 获取Access数据库中所有表名及其列名、列类型
    Oracle 数据库小记
    Oracle11g、PLSQL、Winfrom环境搭建
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
    Android开发中用到的框架、库介绍
    Android数据存储
  • 原文地址:https://www.cnblogs.com/CHEUNGKAMING/p/5717235.html
Copyright © 2011-2022 走看看