moogeek / pheanstalk-worker
Pheanstalk库的工作者
dev-master
2019-05-13 00:12 UTC
Requires
- php: >=7.1.0
- pda/pheanstalk: ~4.0
- psr/log: ~1.0
Requires (Dev)
- phpunit/phpunit: ~8.0
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
创建工作者
工作者是一个进程,当运行时,它会从正在监视的一组队列中取出下一个工作,然后执行定义的任务。
工作者进程运行以下步骤
- 监视所有已注册的管子
- 预留下一个工作
- 一旦工作被预留,根据管子名称调用已注册的处理程序
- 如果没有发生异常,则删除工作(成功)
- 如果发生'retry_on'异常,则调用'release'(重试)
- 如果发生其他异常,则调用'bury'(错误)
- 重复步骤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许可证下发布