beanstalkd从入门到 精通(手动滑机)

安装

yum instll -y beanstalkd

php中如何使用呢
pheanstalk
安装了composer(可以使用yum进行安装)之后,如果你的服务器所在的网络环境在国内的话还是需要配置国的的composer源。
运行下图命令,使用composer安装依赖包
在这里插入图片描述

composer config -g repo.packagist composer https://packagist.phpcomposer.com

参考
一、小例子
beanstalked.php

<?php 
	require '/root/beanstalkd/vendor/autoload.php';//composer 自动加载类,根据命名空间
    use Pheanstalk\Pheanstalk;
    return new Pheanstalk('127.0.0.1',11300);
?>

product.php

<?php 
	$pheanstalk=require './beanstalked.php';
	$pheanstalk->useTube('zhengchengjun')->put(666);
 ?>

consumer.php

<?php 
	$pheanstalk=require './beanstalked.php';
	while (true) {
		$job=$pheanstalk->watch('zhengchengjun')->reserve();
		echo($job->getData());
		$pheanstalk->delete($job);
	}
 ?>

二、pheanstalk的使用方法
1.stats() 查看队列(由管道组成)状态

<?php 
	$pheanstalk=require './beanstalked.php';
	print_r($pheanstalk->stats());
 ?>

2.listTubes() 查看当前所有管道

<?php 
	$pheanstalk=require './beanstalked.php';
	print_r($pheanstalk->listTubes());
 ?>

3.statsTube(tubeName) 查看指定管道信息

<?php 
	$pheanstalk=require './beanstalked.php';
	print_r($pheanstalk->statsTube('default'));
 ?>

4.useTube(tubeName) 指定管道,管道存在就添由put添加job,管道不存在就新建这个管道再添加job
put(Job, [priority],delay) 添加任务至管道
delay多少秒后给才允许消费者消费,此时这个Job处于delay状态。可以用statusTube来进行查看。

<?php 
	$pheanstalk=require './beanstalked.php';
	$pheanstalk->useTube('newUsers')->put('test');
	print_r($pheanstalk->statsTube('newUsers'));
 ?>

5.watch(tubeName) 设置要监听的管道,可以同时设置多个
reserve([time]) 以阻塞的方式监听管道,可以设置阻塞时间,不设置默认永久 statusjob()查看job的相关信息

<?php 
	$pheanstalk=require './beanstalked.php';
	$job=$pheanstalk->watch('newUsers')->reserve();
	$stats=$pheanstalk->statsJob($job);
	print_r($stats);
 ?>

job信息里有它的状态和job id还有一些相关信息,ttr是最大允许在reverse的时间。超过这个时间没有处理这个job。状态就会重新设置为ready。file是可以把你的队列数据进行二进制存储。要开启。reservers key的含意是,一个job超过了ttr所设置的时间,没有经过你的处理默认返回到了ready状态。你又把他的状态设为reserved。来回两种状态的次数。timeouts是超时次数。buries进入预留状态的次数。kicks从预留到时ready状态的次数。
6.peek(job id根据job id得到job信息

<?php 
	$pheanstalk=require './beanstalked.php';
	$job=$pheanstalk->peek(4);
	$stats=$pheanstalk->statsJob($job);
	print_r($stats);
 ?>

7.putInTube(tubename,jobcontent,prifily)

<?php 
	$pheanstalk=require './beanstalked.php';
	//下面两个job设置的优先级不一样
	//值越小优先级越大,优先级越大越先被消费者调用
	$pheanstalk->putInTube('newUsers',66668,1000);
	$pheanstalk->useTube('newUsers')->put(66661,10);
 ?>

可以使用以下代码来测试优先级

<?php 
	$pheanstalk=require './beanstalked.php';
	$job=$pheanstalk->watch('newUsers')->reserve();
	print_r($job);
	//让这个job gg
	$pheanstalk->delete($job);
 ?>

8.listTubesWatced()列出监听的管道。ignore从监听的管道中移除。

	$pheanstalk=require './beanstalked.php';
	$job=$pheanstalk->watch('newUsers')
					->watch('default')
					->ignore('default');
	$tubes=$pheanstalk->listTubesWatched();
	print_r($tubes);

8.release(job,[proifly(优先级)],[delay])把job的状态更改为ready
在一个模块出错的时候,我们应要把这个job放到重新放到管道中而不是删除。

<?php
    $pheanstalk=require './beanstalked.php';
    $pheanstalk->useTube('newUsers')->put('member_1');
    $job=$pheanstalk->watch('newUsers')->reserve();
    $module=false;
    if(!$module){
		    //30秒后job会从reserve状态变成ready状态
            sleep(30);
            $pheanstalk->release($job);
    }else{
            $pheanstalk->delete($job);
    }
 ?>

8.bury()把这个job的状态设置为buired

<?php
    $pheanstalk=require './beanstalked.php';
    $job=$pheanstalk->useTube('newUsers')->reserve();
    sleep(20);
    //把这个job的状态设置为buired,就比如说此时你的邮件服务器凉了,
    //就要把这个任务的状态设置为buired,等到你的邮件服务器恢复正常了,就把这个job设为ready,交给消息费进行处理就好了。
    $pheanstalk->bury($job);
 ?>

9.peekBuried(‘tubeName’)查看指定管道buired状态的job,kickJob(Job)把一个job的状态从buired变成ready,kick(num(一个数字)),所有job id小于这个数字的job都会由buired状态变成ready状态。

<?php
    $pheanstalk=require './beanstalked.php';
    //或者这样$pheanstalk->userTube('newUsers')->kick(999),只要这一行就行
    //下面的代码可以不理会
    $job=$Pheanstalk->peekBuried('newUsers');
    var_dump($pheanstalk->statsJob($job));
    $pheanstalk->kickJob($job);
    var_dump($pheanstalk->statsJob($job))
 ?>

10.peekReady(),peekDelayed()分别是读取指定管道ready状态的job或者delay状态的job

<?php
    $pheanstalk=require './beanstalked.php';
    $job=$pheanstalk->PeekReady('newUsers');
    //$job=$pheanstalk->PeekDelayed('newUsers');
    var_dump($job);
 ?>

11。pauseTube,resumeTube

<?php
    $pheanstalk=require './beanstalked.php';
    //整个管道延迟20秒
    $pheanstalk->pauseTube('newUsers',20);
    //让管道的延迟取消 延迟的意思就是消息者要过了指定的时间才可以消费
    //$pheanstalk->resumeTube('newUsers');
 ?>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值