got/tarth

异步请求框架

1.0.8 2016-08-16 06:16 UTC

This package is auto-updated.

Last update: 2024-08-29 04:13:50 UTC


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)