mariano/disque-php

PHP库,用于Disque内存分布式工作队列

2.0.3 2017-02-16 22:49 UTC

This package is not auto-updated.

Last update: 2024-09-22 07:33:17 UTC


README

Latest Version Software License Build Status Coverage Status Quality Score Total Downloads

一个用于disque分布式工作队列的PHP库。特性

  • 支持PHP (5.5+) 和 HHVM
  • 无依赖:直接快速连接到Disque
  • 高级API,轻松将工作推送到队列,并从队列中检索工作
  • 轻松安排工作在某个DateTime执行
  • 使用内置的Job类,或实现自己的类
  • 基于节点产生的工作数量的智能节点连接支持
  • 使用内置连接连接到Disque,或重用现有的Redis客户端(例如 predis
  • 支持所有当前Disque命令,并允许您轻松实现自定义命令
  • 完全单元测试

安装

$ composer require mariano/disque-php --no-dev

如果您想运行其测试,请移除--no-dev参数。

用法

此库提供队列API,用于轻松推送/拉取工作,并通过其客户端API直接访问所有Disque命令。

创建客户端

use Disque\Connection\Credentials;
use Disque\Client;

$nodes = [
    new Credentials('127.0.0.1', 7711),
    new Credentials('127.0.0.1', 7712, 'password'),
];

$disque = new Client($nodes);

排队工作

$job = new \Disque\Queue\Job(['name' => 'Claudia']);
$disque->queue('my_queue')->push($job);

安排工作在指定时间执行

$job = new \Disque\Queue\Job(['name' => 'Mariano']);
$disque->queue('my_queue')->schedule($job, new \DateTime('+2 hours'));

检索排队的工作,标记为已处理,并继续等待工作

$queue = $disque->queue('my_queue');
while ($job = $queue->pull()) {
    echo "GOT JOB!";
    var_dump($job->getBody());
    $queue->processed($job);
}

有关提供的API的更多信息,请阅读完整文档

测试

$ phpunit

贡献

请参阅CONTRIBUTING以获取详细信息。

支持

如果您需要帮助或希望进行合作,请随时在twitter上联系我:@mgiglesias

安全

如果您发现任何与安全相关的问题,请通过@mgiglesias联系,而不是使用问题跟踪器。

致谢

首先和最重要的是,感谢Salvatore Sanfilippo编写了看起来是工作队列的最终解决方案(感谢所有关于Gearman的鱼)。

其他disque客户端库提供了灵感。

The PHP League提供了出色的README.md骨架,以及有关包装PHP组件的建议。

我们的贡献者表示特别的认可和感激!

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件