moogeek/pheanstalk-worker

Pheanstalk库的工作者

dev-master 2019-05-13 00:12 UTC

This package is auto-updated.

Last update: 2024-09-13 12:26:31 UTC


README

Pheanstalk 是一个纯PHP 7.1+客户端,用于beanstalkd工作队列。自2008年底以来,它一直处于积极开发状态,并被许多人用于生产。

Gordon Heydon创建,Pheanstalk Worker作为一款最佳工作者而创建。自2015年1月起开始作为Pheanstalk工作者的稳定实现,既可以作为一个合适的工作者创建示例,也可以作为一个可用于生产系统的实现。

这个分支只是每个依赖项的版本更新,加上轻微的重构和翻新,至少目前是这样的。

使用Composer安装

使用Composer将pheanstalk-worker作为依赖项安装

composer require moogeek/pheanstalk-worker

创建工作者

工作者是一个进程,当运行时,它会从正在监视的一组队列中取出下一个工作,然后执行定义的任务。

工作者进程运行以下步骤

  1. 监视所有已注册的管子
  2. 预留下一个工作
  3. 一旦工作被预留,根据管子名称调用已注册的处理程序
  4. 如果没有发生异常,则删除工作(成功)
  5. 如果发生'retry_on'异常,则调用'release'(重试)
  6. 如果发生其他异常,则调用'bury'(错误)
  7. 重复步骤2-6

要创建工作者,请使用以下示例。

<?php

// Again hopefully you are using Composers autoloading
use Pheanstalk\Pheanstalk;
use Pheanstalk\Job;
use Moogeek\PheanstalkWorker\Worker;

$pheanstalk = Pheanstalk::create('127.0.0.1');
$worker = new Worker($pheanstalk);

// ----------------------------------------
// register functions to be called for each queue

$worker->register('testtube', function (Job $job) {
    echo $job->getData();
});

// You can register multiple tubes to be watched by a single worker
$worker->register('testtube2', function (Job $job) {
    echo $job->getData();
});

// If you Exception class is specified the job will be released instead of buried.
$worker->register('testtube3', function (Job $job) {
    echo $job->getData();
}, 'SomeException');

// -----------------------------------------
// Start the worker.

$worker->process();

运行测试

测试套件中有一个部分依赖于运行在127.0.0.1:11300上的beanstalkd,之前通过--with-server进行选择。自从迁移到PHPUnit以来,所有测试都是一次性运行的。欢迎提交拉取请求以纠正这一点。

# ensure you have Composer set up
$ wget http://getcomposer.org/composer.phar
$ php composer.phar install

# ensure you have PHPUnit
$ composer install --dev

$ ./vendor/bin/phpunit
PHPUnit 4.0.19 by Sebastian Bergmann.

Configuration read from /Users/pda/code/pheanstalk/phpunit.xml.dist

................................................................. 65 / 83 ( 78%)
..................

Time: 239 ms, Memory: 6.00Mb

OK (83 tests, 378 assertions)

许可证

© Gordon Heydon, Stanislav Zakratskiy

MIT许可证下发布