承接 phlib/beanstalk 相关项目开发

从需求分析到上线部署,全程专人跟进,保证项目质量与交付效率

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

phlib/beanstalk

Composer 安装命令:

composer require phlib/beanstalk

包简介

Library for handling beanstalk connections.

README 文档

README

Code Checks Codecov Latest Stable Version Total Downloads Licence

Beanstalkd library implementation.

Install

Via Composer

$ composer require phlib/beanstalk

Basic Usage

<?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']);

Connection configuration

Name Type Required Default Description
host String Yes Hostname or IP address.
port Integer No 11300 Beanstalk's port.
options Array No <empty> Connection options for Beanstalk.

Options

Name Type Default Description
timeout Integer 60 The connection timeout.

Pool configuration

Name Type Required Default Description
connections ConnectionInterface[] Yes Array of server connections.
retryDelay Integer No 600 How long to delay retrying a connection for after an error.
logger LoggerInterface No Optional Logger to capture connection failures.

Factory

The factory allows for easy setup of the objects. This especially useful when creating a pool of beanstalk servers. The following example lists the various ways it can be used. The configuration examples in the command line section are created using the factory.

$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'],
]);

Factory Configuration

The configuration options are as specified above. With the exception that when creating a pool there is an optional 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],
]);

Pool

The pool allows for work to be pushed to and retrieved from multiple servers. The pool implements the connection interface.

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')); // )

Alternative way to create a Pool, using the Factory to construct the connections:

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);

Command Line Script

./vendor/bin/beanstalk

Running the script will provide you with a list of options. Most are self-explanatory. By default no configuration is required, the script will default to localhost.

Command Line Configuration

There are 2 ways of specifying a configuration.

  1. Create a file called beanstalk-config.php either in /app/root/ or /app/root/config/.
  2. Create a file with a name of your choosing and specify it using the command option -c /path/to/my/config.php.

The file must return an array containing the beanstalk configuration. This configuration will be passed to the Factory to create an instance.

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'];

License

This package is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public License along with this program. If not, see http://www.gnu.org/licenses/.

phlib/beanstalk 适用场景与选型建议

phlib/beanstalk 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 16.16k 次下载、GitHub Stars 达 9, 最近一次更新时间为 2015 年 11 月 06 日, 在 PHP 生态内属于活跃度较高的组件。

它主要适用于以下技术方向: 「queue」 「beanstalk」 「job」 「pool」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。

我们在过去多个企业项目中使用过 phlib/beanstalk 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。

围绕 phlib/beanstalk 我们能提供哪些服务?
定制开发 / 二次开发

基于 phlib/beanstalk 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。

BUG 修复 & 性能优化

线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。

项目外包 & 长期维护

承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。

yvsm@zunyunkeji.com QQ:316430983 微信:yvsm316 西安尊云信息科技 · 专注 PHP / Go / 分布式系统研发

统计信息

  • 总下载量: 16.16k
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 10
  • 点击次数: 15
  • 依赖项目数: 1
  • 推荐数: 0

GitHub 信息

  • Stars: 9
  • Watchers: 2
  • Forks: 2
  • 开发语言: PHP

其他信息

  • 授权协议: LGPL-3.0
  • 更新时间: 2015-11-06