定时任务行为扩展
浏览:20934
最后更新:2018-01-17 10:18
分类:行为
<?php
namespace Behavior;
class CronRunBehavior {
public function run(&$params) {
if (C('CRON_CONFIG_ON')) {
$this -> checkTime();
}
}
private function checkTime() {
if (F('CRON_CONFIG')) {
$crons = F('CRON_CONFIG');
} else if (C('CRON_CONFIG')) {
$crons = C('CRON_CONFIG');
}
if (!empty($crons) && is_array($crons)) {
$update = false;
$log = array();
foreach ($crons as $key => $cron) {
if (empty($cron[2]) || $_SERVER['REQUEST_TIME'] > $cron[2]) {
G('cronStart');
R($cron[0]);
G('cronEnd');
$_useTime = G('cronStart', 'cronEnd', 6);
$cron[2] = $_SERVER['REQUEST_TIME'] + $cron[1];
$crons[$key] = $cron;
$log[] = 'Cron:' . $key . ' Runat ' . date('Y-m-d H:i:s') . ' Use ' . $_useTime . ' s ' . "\r\n";
$update = true;
}
}
if ($update) {
\Think\Log::write(implode('', $log));
F('CRON_CONFIG', $crons);
}
}
}
}
配置文件格式: /* 自动运行配置 */
'CRON_CONFIG_ON' => true, // 是否开启自动运行
'CRON_CONFIG' => array(
'测试定时任务1' => array('Home/Index/crons1', '10', ''), //路径(格式同R)、间隔秒(0为一直运行)、指定一个开始时间
'测试定时任务2' => array('Home/Index/crons2', '5', ''), //路径(格式同R)、间隔秒(0为一直运行)、指定一个开始时间
),
有不明白的请提提出。==============================
使用详细:
1.把该行为类放置在该目录:ThinkPHP\Library\Behavior
2.在Application\Common\Conf目录下创建tags.php文件(已存在则修改)
3.tags.php内容如下:
<?php
return array(
'app_begin' => array('Behavior\CronRunBehavior'),
);
4.Application\Common\Conf\config.php里配置如下: /* 自动运行配置 */
'CRON_CONFIG_ON' => true, // 是否开启自动运行
'CRON_CONFIG' => array(
'测试定时任务' => array('Home/Index/crons', '10', ''), //路径(格式同R)、间隔秒(0为一直运行)、指定一个开始时间
),
5.在Application\Home\Controller\IndexController.class.php里增加如下操作: public function crons() {
echo '执行任务定时任务!';
}