本文 17605 pv

2

php计划任务(按指定时间来运行某个程序)

© kekehu / 技术资源 / 2008.06.08 / 15:16 / 17605PV

    前一阵子遇到有一个程序要在某个时间点来运行,但想来想去也不知用那种方法来触发这个程序,第一个想到的时用JS配合PHP来现实,但没有实现成功,后来请教了一个高手说可以在操作系统里配置。在 Linux 中,我们经常用到 crond 服务器来完成这项工作。cron 服务器可以根据配置文件约定的时间来执行特定的作务。比如我们可以在配置文件中约定每天早上4点,对 httpd 服务器重新启动,这就是一个计划任务;windows 的计划任务我们大家都很熟悉。下面我要介绍的是网站计划任务(访问触发)。
  
   第一个首先要解决的时谁来触发,我选择的是用前台页面来触发,
   代码如下:
<img src="visit.php?job=cron&t=1212880316" alt="" style="width:0px;height:0px;" />

   t=1212880316//这个是时间

  第二个要解决的时什么时侯运行,(具体的不讲了,把代码贴出)

//计划执行时间
if($job=='cron'){
  check_method();
  //查询数据库的下一个时间是否小于现在的时间
  if($maxrecord['deltemptime']<$nowtime['timestamp']){
    $crondb = array();
    //day为0为每日 week周 minute时间断 hour什么时侯开始
    $rt['cron'] = array('day'=>'0','week'=>$config['cron_week'],'m'=>$config['cron_minute'],'hour'=>$config['cron_hour']);
    $crondb[] = $rt;
  }
  foreach ($crondb AS $key => $cron_val){
    //设置了允许分钟段
    if (!empty($config['cron_minute'])){
      $m = explode(' ', $config['cron_minute']);
      
      $m_now = intval(local_date('i',$nowtime['timestamp']));
      if (!in_array($m_now, $m)) {//不包含此分钟的跳出
        continue;
      }
    }

    /*执行任务*/
                               /*********此处是你写的任务***********************/
    $next_time = get_next_time($cron_val['cron']);
    $DB->query("UPDATE `maxrec` SET `deltemptime`={$next_time}");
  }
  exit;
}

本文有 2 篇评论

  1. @ www 说 :
    2017.10.17 17:35
    avatar

    uplookbadcrycrycryenvyenvyenvyenvyenvyenvyenvyenvy

  2. @ 水水水水水死死死死死死 说 :
    2012.11.09 10:27
    avatar

    dogfeargrinkilllovepigpukeshockshysmilestupidsmokesmileshocklovefear

1/1 第一页 1 最后页

发表你的见解

打开HTML 打开UBB 打开表情 隐藏 记住我
emotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemotemot
emotemotemotemotemot