xobotyi/beansclient

PHP7.1+ 版本的 beanstalkd 工作队列客户端,无任何依赖

资助包维护!
Patreon

v3.0.0-alpha.1 2021-08-09 07:44 UTC

README

beansclient

NPM Version NPM Downloads NPM Dependents Build Coverage NPM Dependents NPM Dependents

关于

BeansClient 是一个用于 beanstalkd 工作队列的 PHP8 客户端,具有详尽的单元测试。库使用 PSR-4 自动加载标准,并始终具有 100% 的测试覆盖率。
库为您提供了简单的方式来提供自己的 Socket 实现,在需要记录请求和响应或代理流量到非标准传输的情况下。

BeansClient 支持 1.12 版本中在 协议 中指定的所有命令和响应

为什么选择 BeansClient?

  1. 经过充分测试。
  2. 支持 UNIX 套接字。
  3. 积极维护。
  4. 可预测(在任何情况下都不会抛出异常,你好 pheanstalk🤪)。
  5. 支持 PHP8。

内容

  1. 需求
  2. 安装
  3. 用法
  4. 文档
    • TBD

需求

安装

使用 composer 安装

composer require xobotyi/beansclient

用法

<?php
use xobotyi\beansclient\Beanstalkd;
use xobotyi\beansclient\Client;
use xobotyi\beansclient\Socket\SocketsSocket;

$sock   = new SocketsSocket(host: 'localhost', port: 11300, connectionTimeout: 2);
$client = new Client(socket: $sock, defaultTube: 'myAwesomeTube');

##            ##
#   PRODUCER   #
##            ##

$job = $client->put("job's payload", delay: 2);
if($job['state'] === Beanstalkd::JOB_STATE_DELAYED) {
  echo "Job {$job['id']} is ready to be reserved within 2 seconds\n";
}

##            ##
#    WORKER    #
##            ##

$client->watchTube('myAwesomeTube2');

$job = $client->reserve();

if ($job) {
    echo "Hey, i received first {$job['payload']} of job with id {$job['id']}\n";

    $client->delete($job['id']);

    echo "And i've done it!\n";
}
else {
    echo "So sad, i have nothing to do";
}

echo "Am I still connected? \n" . ($client->socket()->isConnected() ? 'Yes' : 'No') . "\n";