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 来实现,等有时间再写哈~