您现在的位置是:群英 > 开发技术 > PHP语言
PHP Beanstalkd是什么,如何安装及使用?
Admin发表于 2021-12-02 17:39:021149 次浏览

    今天我们一起来了解一下PHP Beanstalkd,一些朋友可能不是很了解PHP Beanstalkd是什么,如何安装及使用?因此下面小编就给大家来详细的介绍一下Beanstalkd,感兴趣的朋友就继续往下看吧。

一、Beanstalkd是什么?

    Beanstalkd是一个高性能,轻量级的分布式内存队列

二、Beanstalkd特性

    1、支持优先级(支持任务插队)
    2、延迟(实现定时任务)
    3、持久化(定时把内存中的数据刷到binlog日志)
    4、预留(把任务设置成预留,消费者无法取出任务,等某个合适时机再拿出来处理)
    5、任务超时重发(消费者必须在指定时间内处理任务,如果没有则认为任务失败,重新进入队列)

三、Beanstalkd核心元素

    生产者 -> 管道(tube) -> 任务(job) -> 消费者

    Beanstalkd可以创建多个管道,管道里面存了很多任务,消费者从管道中取出任务进行处理。

四、任务job状态

    delayed 延迟状态
    ready 准备好状态
    reserved 消费者把任务读出来,处理时
    buried 预留状态
    delete 删除状态

五、安装Beanstalkd

http://kr.github.io/beanstalkd/download.html

    下载beanstalkd-1.10.tar.gz

> tar -xf beanstalkd-1.10.tar.gz
> cd beanstalkd-1.10
> make

    查看beanstalkd参数信息

> ./beanstalkd -h

    启动beanstalkd

> ./beanstalkd -l 127.0.0.1 -p 11300 -b /data/beanstalkd/binlog &

    -b表示开启binlog,断电后重启自动恢复任务  

六、下载Pheanstalk类

    首先安装composer

> curl -sS https://getcomposer.org/installer | php
> mv composer.phar /usr/local/bin/composer
> composer require pda/pheanstalk

     编写一个简单脚本查看信息

<?php
require './vendor/autoload.php';

use Pheanstalk\Pheanstalk;

$p = new Pheanstalk('127.0.0.1', 11300);
//查看beanstalkd当前的状态信息
var_dump($p->stats());

七、Pheanstalk使用方法

    维护方法

stats() 查看状态方法
listTubes() 目前存在的管道
listTubesWatched() 目前监听的管道
statsTube() 管道的状态
useTube() 指定使用的管道
statsJob() 查看任务的详细信息
peek() 通过任务ID获取任务

    生产者方法

putInTube() 往管道中写入数据
put() 配合useTube()使用

    消费者方法

watch() 监听管道,可以同时监听多个管道
ignore() 不监听管道
reserve() 以阻塞方式监听管道,获取任务
reserveFromTube() 
release() 把任务重新放回管道
bury() 把任务预留
peekBuried() 把预留任务读取出来
kickJob() 把buried状态的任务设置成ready
kick() 批量把buried状态的任务设置成ready
peekReady() 把准备好的任务读取出来
peekDelayed() 把延迟的任务读取出来
pauseTube() 给管道设置延迟
resumeTube() 取消管道延迟
touch() 让任务重新计算ttr时间,给任务续命

    生产者producer.php代码如下:

<?php
require './vendor/autoload.php';

use Pheanstalk\Pheanstalk;

//创建一个Pheanstalk对象
$p = new Pheanstalk('192.168.1.222', 11300);

$data = array(
  'id' => 1,
  'name' => 'test',
);

//向userReg管道中添加任务,返回任务ID
//put()方法有四个参数
//第一个任务的数据
//第二个任务的优先级,值越小,越先处理
//第三个任务的延迟
//第四个任务的ttr超时时间
$id = $p->useTube('userReg')->put(json_encode($data));
//获取任务
$job = $p->peek($id);
//查看任务状态
print_r($p->statsJob($job));

    消费者consumer.php代码如下:

<?php
require './vendor/autoload.php';

use Pheanstalk\Pheanstalk;

//创建一个Pheanstalk对象
$p = new Pheanstalk('192.168.1.222', 11300);

//监听userReg管道,忽略default管道
$job = $p->watch('userReg')->ignore('default')->reserve();

$data = json_decode($job->getData());
//打印任务中的数据
print_r($data);

//最后删除任务,表示任务处理完成
$p->delete($job);

    现在大家对于PHP Beanstalkd是什么,如何安装及使用应该都清楚了吧,上述示例有一定的借鉴价值,有需要的朋友可以参考学习,希望对大家学习PHP有帮助,想要了解更多大家可以关注群英网络其它相关文章。

文本转载自脚本之家

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

标签: beanstalkd
相关信息推荐
2022-04-29 15:54:38 
摘要:给大家带来一篇关于php字符串比较函数用法总结的相关教程文章,内容涉及到php、字符串、比较、函数、strcmp、strcasecmp、strnatcmp、strnatcasecmp、php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)等相关内容,已被907人关注,更多关于php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)的内容希望能够帮助到大家。
2022-02-15 17:52:25 
摘要:如何利用C语言编写简易的猜数游戏?用C语言实现猜数游戏是一个比较基础的,适合新手学习的一个示例,中文示例代码有一定的参考价值,新手朋友可以参考了解看看,希望对学习C语言的应用有帮助。
2022-11-12 17:41:50 
摘要:vue项目中怎么做图片裁剪?下面本篇文章给大家介绍一下怎么使用vue-cropper做图片裁剪,希望给大家有所帮助!
群英网络助力开启安全的云计算之旅
立即注册,领取新人大礼包
  • 联系我们
  • 24小时售后:4006784567
  • 24小时TEL :0668-2555666
  • 售前咨询TEL:400-678-4567

  • 官方微信

    官方微信
Copyright  ©  QY  Network  Company  Ltd. All  Rights  Reserved. 2003-2019  群英网络  版权所有   茂名市群英网络有限公司
增值电信经营许可证 : B1.B2-20140078   粤ICP备09006778号
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
微信公众号
返回顶部
返回顶部 返回顶部