got / tarth
异步请求框架
1.0.8
2016-08-16 06:16 UTC
Requires
- php: >=5.3
- ext-pcntl: *
- ext-redis: *
- got/stark: *
- monolog/monolog: *
- php-curl-class/php-curl-class: *
README
Tarth
是一个异步、并发、分布式任务处理框架。
要求
- PHP 5.3 或更高版本
- POSIX 兼容的操作系统(Linux, OSX, BSD)
- PHP 的 POSIX 和 PCNTL 扩展
- Redis 扩展
特性
- 异步 API 回调,多 API 回调
- 支持定时回调,类似于 crontab,但包括重试、安全、可控选项
- 支持任务数量限制,速度控制器
- 支持回调优先级
- 亮点特性
用法
您可以使用 Stark
来启动定时器和处理器守护进程
php vendor/bin/stark -f scripts/timer.ini php vendor/bin/stark -f scripts/processor.ini
守护进程
使用 Stark
任务工具
API
类:\Tarth\Tool\Task
创建
static public function createApiTask($url, $method = 'GET', $params = array()) static public function createEmailTask($to, $subject, $message)
控制
static public function atomTask() static public function exec() static public function closeTask($taskId)
安全
static public function getTarthHeader(TaskInterface $task) static public function isRequestFromTarth()
示例
普通任务
php tests/normal_api_task.php
<?php require_once __DIR__ . '/../vendor/autoload.php'; \Tarth\Tool\Redis::setCacheServer('127.0.0.1:6379'); \Tarth\Tool\Redis::setQueueServer('127.0.0.1:6379'); $task = \Tarth\Tool\Task::createApiTask('http://alleria.mcp.wap.grid.sina.com.cn/test/normal'); echo \Tarth\Tool\Task::exec();
定时任务
php tests/timer_task.php
<?php require_once __DIR__ . '/../vendor/autoload.php'; $task = \Tarth\Tool\Task::createApiTask('http://alleria.mcp.wap.grid.sina.com.cn/test/normal?case=timer&time=' . time()); $task->runAfter(100); echo \Tarth\Tool\Task::exec();
多任务
php tests/multi_task.php
<?php require_once __DIR__ . '/../vendor/autoload.php'; $task = \Tarth\Tool\Task::createApiTask('http://alleria.mcp.wap.grid.sina.com.cn/test/normal?case=atom&index=1&date=' . date('YmdHis')); $task = \Tarth\Tool\Task::createApiTask('http://alleria.mcp.wap.grid.sina.com.cn/test/normal?case=atom&index=2&date=' . date('YmdHis')); echo \Tarth\Tool\Task::exec();
原子任务
php tests/atom_task.php
<?php require_once __DIR__ . '/../vendor/autoload.php'; $task = \Tarth\Tool\Task::createApiTask('http://alleria.mcp.wap.grid.sina.com.cn/test/normal?case=atom&index=1&date=' . date('YmdHis')); $task = \Tarth\Tool\Task::createApiTask('http://alleria.mcp.wap.grid.sina.com.cn/test/normal?case=atom&index=2&date=' . date('YmdHis')); $task = \Tarth\Tool\Task::atomTask(); $task->runAfter(600)->canClose(); echo \Tarth\Tool\Task::exec();
配置
守护进程配置
见 Stark
Redis 配置
在守护进程 ini 中配置
[queue] type = "redis" host = "127.0.0.1" port = "6379" key = "tarth-queue-0 tarth-queue-1 tarth-queue-2"
在工具中更改
<?php \Tarth\Tool\Redis::setCacheServer('127.0.0.1:6379'); \Tarth\Tool\Redis::setQueueServer('127.0.0.1:6379');
任务选项
public function setPriority($level) public function setMaxPerSecond($max) public function setMaxPerMinute($max) public function setMaxPerHour($max) public function setMaxPerDay($max) public function forbidDuplicate() public function canClose() public function runAt($timestamp) public function runAfter($seconds)