marlonfan/disque-php

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

2.0.4 2019-06-19 11:19 UTC

This package is not auto-updated.

Last update: 2024-09-20 11:24:53 UTC


README

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

这是一个PHP库,用于非常出色的disque分布式作业队列。特性:

  • 支持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)。有关更多信息,请参阅许可文件