PHPackages                             phalapi/task - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Queues &amp; Workers](/categories/queues)
4. /
5. phalapi/task

ActiveLibrary[Queues &amp; Workers](/categories/queues)

phalapi/task
============

PhalApi 2.x 扩展类库 - Task计划任务，以接口服务形式实现的新型计划任务。

v2.0.0(8y ago)414.0k↓50%41GPL-3.0+PHPPHP &gt;=5.3.3

Since Jul 21Pushed 3y ago2 watchersCompare

[ Source](https://github.com/phalapi/task)[ Packagist](https://packagist.org/packages/phalapi/task)[ Docs](https://www.phalapi.net/)[ RSS](/packages/phalapi-task/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (1)Dependencies (1)Versions (2)Used By (1)

PhalApi Task 接口计划任务
===================

[](#phalapi-task-接口计划任务)

PhalApi 2.x 扩展类库 - Task计划任务，以接口服务形式实现的新型计划任务。

Usage 使用说明
----------

[](#usage-使用说明)

### 安装

[](#安装)

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;
```

并在上面的计划任务表中，添加你需要的计划任务，例如：

- title 任务标题
- trigger\_class 触发器类名，默认是PhalApi\\Task\\Progress\\Trigger\\CommonTrigger
- fire\_params 需要传递的参数，默认第一个是待执行的接口服务名称，例如：App.Site.Index，第二是MQ的类名，默认是：PhalApi\\Task\\MQ\\FileMQ，第三个是调试器类名，默认是：PhalApi\\Task\\Runner\\LocalRunner。这三个参数使用&amp;分割
- interval\_time 执行间隔，单位：秒
- enable 是否启动，1启动，0禁止

启动计划任务
------

[](#启动计划任务)

在启动计划任务前，我们需要一个能运行计划任务的入口脚本，可以把以下PHP代码放到`./bin/crontab.php`文件中。

```
