|
|
6 months ago | |
|---|---|---|
| .. | ||
| bin | 6 months ago | |
| config | 6 months ago | |
| data | 6 months ago | |
| src | 6 months ago | |
| tests | 6 months ago | |
| .gitignore | 6 months ago | |
| LICENSE | 6 months ago | |
| README.md | 6 months ago | |
| composer.json | 6 months ago | |
PhalApi 2.x 扩展类库 - Task计划任务,以接口服务形式实现的新型计划任务。
composer安装命令:
$ composer require phalapi/task
或者,手动修改你的项目根目录下的 composer.json文件,并添加:
"require": {
"phalapi/task": "dev-master"
},
然后,执行:composer update,即可安装。
修改 ./config/app.php 文件,并添加:
/**
* 计划任务配置
*/
'Task' => array(
//MQ队列设置,可根据使用需要配置
'mq' => array(
// 默认使用文件MQ
'file' => array(
'path' => API_ROOT . '/runtime',
'prefix' => 'phalapi_task',
),
),
),
修改DI文件,并注册Task服务,即在 ./config/di.php 添加:
$mq = new \PhalApi\Task\MQ\FileMQ(); //可以选择你需要的MQ
$di->taskLite = new \PhalApi\Task\Lite($mq);
然后,创建以下数据库表(注意同步修改表前缀):
CREATE TABLE `tbl_task_progress` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`title` varchar(200) DEFAULT '' COMMENT '任务标题',
`trigger_class` varchar(50) DEFAULT '' COMMENT '触发器类名',
`fire_params` varchar(255) DEFAULT '' COMMENT '需要传递的参数,格式自定',
`interval_time` int(11) DEFAULT '0' COMMENT '执行间隔,单位:秒',
`enable` tinyint(1) DEFAULT '1' COMMENT '是否启动,1启动,0禁止',
`result` text COMMENT '运行的结果,以json格式保存',
`state` tinyint(1) DEFAULT '0' COMMENT '进程状态,0空闲,1运行中,-1异常退出',
`last_fire_time` int(11) DEFAULT '0' COMMENT '上一次运行时间',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
并在上面的计划任务表中,添加你需要的计划任务,例如:
在启动计划任务前,我们需要一个能运行计划任务的入口脚本,可以把以下PHP代码放到./bin/crontab.php文件中。
<?php
/**
* 计划任务入口示例
* ./bin/crontab.php 文件
*/
require_once dirname(__FILE__) . '/../public/init.php';
try {
$progress = new \PhalApi\Task\Progress();
$progress->run();
} catch (Exception $ex) {
echo $ex->getMessage();
echo "\n\n";
echo $ex->getTraceAsString();
// notify ...
}
最后,就可以直接在命令行,或者通过crontab定时执行上面的计划任务。
直接手动执行计划任务:
$ php ./bin/crontab.php
通过配置crontab计划任务定时执行,例如每1分钟检测一次计划任务。
# PhalApi-Task计划任务
*/1 * * * * php /path/to/phalapi-pro/bin/crontab.php > /dev/null
你也可以把计划任务执行的结果保存到日记文件,注意要定期手动查看和清理一下。
# PhalApi-Task计划任务
*/1 * * * * php /path/to/phalapi-pro/bin/crontab.php >> /path/to/phalapi-pro/runtime/crontab.log 2>&1
更多详细资料请参考: