crons自动执行计划理解

浏览:4199 发布日期:2014/04/23 分类:技术分享 关键字: crons 自动执行计划
在公共的Conf目录下添加俩个配置文件,tags.php和crons.php
tags.php下添加如下代码return array(
'view_filter' => array('Behavior\TokenBuildBehavior')
"action_end"=>array("Behavior\CronRunBehavior"),
);
crons.php下添加如下代码return array(
        '哈哈'=>array('myplan',5,1398215692),
);
再在公共目录下添加Cron文件夹,Cron下添加myplan.php文件,添加如下代码:echo "每5秒自动执行改程序";这时候自动执行计划就实现了,每当我们访问控制器操作的时候就会判断runtime下的~crons.php文件的修改时间和访问时间是否大于5秒,大于则实行计划,并修改~crons.php文件,否则不执行计划。
附ThinkPHP核心源码:foreach ($crons as $key=>$cron){
                if(empty($cron[2]) || $_SERVER['REQUEST_TIME']>=$cron[2]) {
                    // 到达时间 执行cron文件
                    G('cronStart');
                    include COMMON_PATH.'Cron/'.$cron[0].'.php';
                    G('cronEnd');
                    $_useTime     =     G('cronStart','cronEnd', 6);
                    // 更新cron记录
                    $cron[2]    =    $_SERVER['REQUEST_TIME']+$cron[1];
                    $crons[$key]    =    $cron;
                    $log[] = "Cron:$key Runat ".date('Y-m-d H:i:s')." Use $_useTime s\n";
                    $update     =     true;
                }
            }
            if($update) {
                // 记录Cron执行日志
                \Think\Log::write(implode('',$log));
                // 更新cron文件
                $content  = "<?php\nreturn ".var_export($crons,true).";\n?>";
                file_put_contents(RUNTIME_PATH.'~crons.php',$content);
            }
最佳答案
评论( 相关
后面还有条评论,点击查看>>