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);
} 最佳答案