rybakit/phive-task-queue

基于 rybakit/phive-queue 的轻量级任务队列

v0.3.0 2014-08-05 08:15 UTC

This package is auto-updated.

Last update: 2024-09-10 12:28:47 UTC


README

Build Status

一个基于 Phive Queue 的工作/任务队列。

安装

推荐通过 Composer 安装 Phive Task Queue

$ composer require rybakit/phive-task-queue:~1.0@dev

使用示例

// worker.php

use Monolog\Logger;
use Monolog\Handler\StreamHandler;
use Phive\Queue\SysVQueue;
use Phive\TaskQueue\ExecutionContext;
use Phive\TaskQueue\Executor;
use Phive\TaskQueue\ExecutorAdapter\CallableExecutorAdapter;

// create a queue
// see a list of available queues: https://github.com/rybakit/phive-queue#queues
$queue = new SysVQueue(0xDEADBEAF, true);

// create a logger
// can be any PSR-3 compliant logger
$logger = new Logger('worker');
$logger->pushHandler(new StreamHandler(STDOUT, Logger::INFO));

// create a callback
$callback = function ($payload, LoggerInterface $logger) {
    $logger->info(strrev($payload));
};

$adapter = new CallbackExecutorAdapter(new DirectCallbackResolver($callback));
$context = new ExecutionContext($queue, $logger);
$executor = new Executor($adapter, $context);

// main loop
while (true) {
    if (!$executor->execute()) {
        sleep(1);
    }
}
// client.php

use Phive\Queue\SysVQueue;

$queue = new SysVQueue(0xDEADBEAF, true);

// send a payload object to the queue and delay execution for 5 seconds
// see supported item types: https://github.com/rybakit/phive-queue#item-types
$queue->push('Hello world!', '+5 seconds');

许可证

Phive Task Queue 在 MIT 许可证下发布。有关详细信息,请参阅捆绑的 LICENSE 文件。