phlib/beanstalk

处理 beanstalk 连接的库。

3.0.2 2024-07-12 19:57 UTC

README

Code Checks Codecov Latest Stable Version Total Downloads Licence

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

运行脚本将为您提供一个选项列表。大多数都是自解释的。默认情况下无需配置,脚本将默认为主机。

命令行配置

有两种指定配置的方式。

  1. /app/root//app/root/config/ 中创建一个名为 beanstalk-config.php 的文件。
  2. 创建一个您选择的名称的文件,并使用命令选项 -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/