phlib / beanstalk
处理 beanstalk 连接的库。
3.0.2
2024-07-12 19:57 UTC
Requires
- php: ^7.4|^8.0
- phlib/console-configuration: ^2
- psr/log: ^1 || ^2 || ^3
- symfony/console: ^5.4 || ^6
Requires (Dev)
Suggests
- psr/log-implementation: Optional Logger can capture connection failures
This package is auto-updated.
Last update: 2024-09-13 05:22:26 UTC
README
Beanstalkd 库实现。
安装
通过 Composer
$ composer require phlib/beanstalk
基本用法
<?php use Phlib\Beanstalk\Connection; // producer $beanstalk = new Connection('127.0.0.1'); $beanstalk->useTube('my-tube'); $beanstalk->put(array('my' => 'jobData'));
<?php use Phlib\Beanstalk\Connection; // consumer $beanstalk = new Connection('127.0.0.1'); $beanstalk->watch('my-tube') ->ignore('default'); $job = $beanstalk->reserve(); $myJobData = $job['body']; $beanstalk->delete($job['id']);
连接配置
选项
池配置
工厂
工厂允许轻松设置对象。这在创建 beanstalk 服务器池时特别有用。以下示例列出了可以使用的方法。命令行部分的配置示例是使用工厂创建的。
$factory = new \Phlib\Beanstalk\Factory(); $beanstalk = $factory->create('localhost'); $beanstalk = $factory->createFromArray([ 'host' => 'localhost', ]); $beanstalk = $factory->createFromArray([ ['host' => '10.0.0.1'], ['host' => '10.0.0.2'], ['host' => '10.0.0.3'], ]);
工厂配置
配置选项如上所述。唯一例外是创建池时有一个可选的 enabled
。
$factory = new \Phlib\Beanstalk\Factory(); $beanstalk = $factory->createFromArray([ ['host' => '10.0.0.1', 'enabled' => true], ['host' => '10.0.0.2', 'enabled' => false], ['host' => '10.0.0.3', 'enabled' => true], ]);
池
池允许将工作推送到多个服务器并从中检索。池实现了连接接口。
use Phlib\Beanstalk\Connection; use Phlib\Beanstalk\Pool; $connections = [ new Connection('10.0.0.1'), new Connection('10.0.0.2'), new Connection('10.0.0.3'), new Connection('10.0.0.4'), ]; $logger = new MyLogger(); $pool = new Pool($connections, 120, $logger); $pool->useTube('my-tube'); $pool->put(array('my' => 'jobData1')); // ) $pool->put(array('my' => 'jobData2')); // )-> distributed between random servers $pool->put(array('my' => 'jobData3')); // )
使用工厂构建连接的另一种创建池的方法
use Phlib\Beanstalk\Factory; use Phlib\Beanstalk\Pool; $connections = (new Factory())->createConnections([ ['host' => '10.0.0.1', 'enabled' => true], ['host' => '10.0.0.2', 'enabled' => false], ['host' => '10.0.0.3', 'enabled' => true], ]); $logger = new MyLogger(); $pool = new Pool($connections, 120, $logger);
命令行脚本
./vendor/bin/beanstalk
运行脚本将为您提供一个选项列表。大多数都是自解释的。默认情况下无需配置,脚本将默认为主机。
命令行配置
有两种指定配置的方式。
- 在
/app/root/
或/app/root/config/
中创建一个名为 beanstalk-config.php 的文件。 - 创建一个您选择的名称的文件,并使用命令选项
-c /path/to/my/config.php
指定它。
该文件必须返回一个包含 beanstalk 配置的数组。此配置将传递给工厂以创建一个实例。
return [ 'host' => '10.0.0.1', 'port' => 11300 ];
// pool configuration return [ [ 'host' => '10.0.0.1', 'port' => 11300, ], [ 'host' => '10.0.0.2', 'port' => 11300, ], [ 'host' => '10.0.0.3', 'port' => 11300, 'enabled' => false, ], ];
require_once 'my/app/bootstrap.php'; $app = new MyApp(); return $app['config']['beanstalk'];
许可证
此软件包是免费软件:您可以在自由软件基金会发布的 GNU 较小通用公共许可证的条款下重新分发和/或修改它,许可证版本 3 或(根据您的选择)更高版本。
此程序是免费提供给用户使用的,但不提供任何保证;甚至没有关于其适销性或适用于特定用途的隐含保证。有关详细信息,请参阅 GNU 较小通用公共许可证。
您应已收到此程序的 GNU 较小通用公共许可证副本。如果没有,请参阅 https://gnu.ac.cn/licenses/。