PHP Beanstalkd消息队列的安装与使用方法实例详解

 更新时间:2020年02月21日 11:06:57   作者:怀素真  
这篇文章主要介绍了PHP Beanstalkd消息队列的安装与使用方法,结合实例形式详细分析了PHP Beanstalkd消息队列的基本功能、原理、安装、使用方法及相关操作注意事项,需要的朋友可以参考下

本文实例讲述了PHP 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相关内容感兴趣的读者可查看本站专题:《PHP进程与线程操作技巧总结》、《PHP网络编程技巧总结》、《PHP基本语法入门教程》、《PHP数组(Array)操作技巧大全》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总

希望本文所述对大家PHP程序设计有所帮助。

相关文章

  • PHP中的self关键字详解

    PHP中的self关键字详解

    这篇文章主要给大家介绍了关于PHP中self关键字的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用PHP具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06
  • php保存任意网络图片到服务器的方法

    php保存任意网络图片到服务器的方法

    这篇文章主要介绍了php保存任意网络图片到服务器的方法,涉及php通过curl操作远程图片的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-04-04
  • PHP中register_shutdown_function函数的基础介绍与用法详解

    PHP中register_shutdown_function函数的基础介绍与用法详解

    php中的异常捕获没有java的强大,有些情况下,需要知道某段php程序业务是否正常执行完,可以用register_shutdown_function函数来辅助实现,这篇文章主要给大家介绍了关于PHP中register_shutdown_function函数的基础介绍与用法的相关资料,需要的朋友可以参考。
    2017-11-11
  • php实现签到功能的方法实例分析

    php实现签到功能的方法实例分析

    这篇文章主要介绍了php实现签到功能的方法,结合实例形式分析了php基于数据库及时间判断操作实现签到功能的相关技巧,需要的朋友可以参考下
    2017-12-12
  • PHP开发不能违背的安全规则 过滤用户输入

    PHP开发不能违背的安全规则 过滤用户输入

    作为PHP程序员,特别是新手,对于互联网的险恶总是知道的太少,对于外部的入侵有很多时候是素手无策的,他们根本不知道黑客是如何入侵的、提交入侵、上传漏洞、sql 注入、跨脚本攻击等等。
    2011-05-05
  • 几行代码轻松实现PHP文件打包下载zip

    几行代码轻松实现PHP文件打包下载zip

    这篇文章主要为大家详细介绍了使用PHP自带zlib函数 ,轻松实现PHP文件打包下载zip,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • php面向对象之反射功能与用法分析

    php面向对象之反射功能与用法分析

    这篇文章主要介绍了php面向对象之反射功能与用法,结合实例形式简单分析了php5面向对象反射的概念及具体用法,需要的朋友可以参考下
    2017-03-03
  • PHP获取网站域名和地址的代码

    PHP获取网站域名和地址的代码

    从phpmyadmin中提取的函数
    2008-08-08
  • php写入数据到CSV文件的方法

    php写入数据到CSV文件的方法

    这篇文章主要介绍了php写入数据到CSV文件的方法,涉及php操作csv文件的技巧,非常具有实用价值,需要的朋友可以参考下
    2015-03-03
  • 延长phpmyadmin登录时间的方法

    延长phpmyadmin登录时间的方法

    新安装的phpmyadmin默认是cookie模式,如果闲置十几分钟不操作的话,就会要求重新登录。
    2011-02-02

最新评论