定時任務行為擴展

瀏覽:18486 最后更新: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 '執行任務定時任務!';
    }
評論( 相關
后面還有條評論,點擊查看>>
江苏快三100计划 鄯善县| 凌海市| 嘉鱼县| 建德市| 无为县| 长岭县| 通辽市| 商水县| 且末县| 惠东县| 溧水县| 滦南县| 龙江县| 黄石市| 正定县| 贡嘎县| 德阳市| 怀仁县| 独山县| 连平县| 台山市| 长泰县| 兴安盟| 马尔康县| 莱西市| 白朗县| 兴业县| 保亭| 天气| 和林格尔县| 保靖县| 赤峰市| 霍林郭勒市| 龙州县| 平南县| 长寿区| 海南省| 阿图什市|