example(常用示例)

Crontab Task Control(计划任务控制器)

经常会有很多 crontab 需要在项目中运行,通过建立一个 crontab_control 入口,

具体实现如下:

在项目内建立 cmd_control ,内部 run_path 指向 crontab 目录,然后遍历所有

<?php 
!defined('FRAMEWORK_PATH') && exit('Accesss Deined');
class crontab_control extends cli_control {
    public function __construct(&$conf) {
        // 设置当 on_{action} 方法找不到时,拼接 ROOT_PATH.'control/crontab/{action}.php' 文件路径进行执行
        $this->run_path = ROOT_PATH.'control/crontab/';
        parent::__construct($conf);
    }
}

在 control/crontab/ 中建立 test.php

<?php
!defined('FRAMEWORK_PATH') && exit('Accesss Deined');
echo "test";

在 *unix crontab 中添加计划任务

# 每三分钟执行一次 test
*/3 * * * * cd /PATH-OF-PROJECT/ && php index.php crontab test

后续可自行扩展:

统一一个 crontab 目录,使用 exec 或者 popen 去并行执行任务,

每个任务的调度,可以由文件名或者对应的配置文件来定义。

Deamon Task Control(守护进程控制器)

需要配合 Redis 来实现,等有时间再写哈~

results matching ""

    No results matching ""