最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PHP Beanstalkd消息隊(duì)列的安裝與使用方法實(shí)例詳解

 更新時(shí)間:2020年02月21日 11:06:57   作者:懷素真  
這篇文章主要介紹了PHP Beanstalkd消息隊(duì)列的安裝與使用方法,結(jié)合實(shí)例形式詳細(xì)分析了PHP Beanstalkd消息隊(duì)列的基本功能、原理、安裝、使用方法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了PHP Beanstalkd消息隊(duì)列的安裝與使用方法。分享給大家供大家參考,具體如下:

一、Beanstalkd是什么?

Beanstalkd是一個(gè)高性能,輕量級(jí)的分布式內(nèi)存隊(duì)列

二、Beanstalkd特性

1、支持優(yōu)先級(jí)(支持任務(wù)插隊(duì))
2、延遲(實(shí)現(xiàn)定時(shí)任務(wù))
3、持久化(定時(shí)把內(nèi)存中的數(shù)據(jù)刷到binlog日志)
4、預(yù)留(把任務(wù)設(shè)置成預(yù)留,消費(fèi)者無法取出任務(wù),等某個(gè)合適時(shí)機(jī)再拿出來處理)
5、任務(wù)超時(shí)重發(fā)(消費(fèi)者必須在指定時(shí)間內(nèi)處理任務(wù),如果沒有則認(rèn)為任務(wù)失敗,重新進(jìn)入隊(duì)列)

三、Beanstalkd核心元素

生產(chǎn)者 -> 管道(tube) -> 任務(wù)(job) -> 消費(fèi)者

Beanstalkd可以創(chuàng)建多個(gè)管道,管道里面存了很多任務(wù),消費(fèi)者從管道中取出任務(wù)進(jìn)行處理。

四、任務(wù)job狀態(tài)

delayed 延遲狀態(tài)
ready 準(zhǔn)備好狀態(tài)
reserved 消費(fèi)者把任務(wù)讀出來,處理時(shí)
buried 預(yù)留狀態(tài)
delete 刪除狀態(tài)

五、安裝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參數(shù)信息

> ./beanstalkd -h

啟動(dòng)beanstalkd

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

-b表示開啟binlog,斷電后重啟自動(dòng)恢復(fù)任務(wù)  

六、下載Pheanstalk類

首先安裝composer

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

 編寫一個(gè)簡(jiǎn)單腳本查看信息

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

use Pheanstalk\Pheanstalk;

$p = new Pheanstalk('127.0.0.1', 11300);
//查看beanstalkd當(dāng)前的狀態(tài)信息
var_dump($p->stats());

七、Pheanstalk使用方法

維護(hù)方法

stats() 查看狀態(tài)方法
listTubes() 目前存在的管道
listTubesWatched() 目前監(jiān)聽的管道
statsTube() 管道的狀態(tài)
useTube() 指定使用的管道
statsJob() 查看任務(wù)的詳細(xì)信息
peek() 通過任務(wù)ID獲取任務(wù)

生產(chǎn)者方法

putInTube() 往管道中寫入數(shù)據(jù)
put() 配合useTube()使用

消費(fèi)者方法

watch() 監(jiān)聽管道,可以同時(shí)監(jiān)聽多個(gè)管道
ignore() 不監(jiān)聽管道
reserve() 以阻塞方式監(jiān)聽管道,獲取任務(wù)
reserveFromTube() 
release() 把任務(wù)重新放回管道
bury() 把任務(wù)預(yù)留
peekBuried() 把預(yù)留任務(wù)讀取出來
kickJob() 把buried狀態(tài)的任務(wù)設(shè)置成ready
kick() 批量把buried狀態(tài)的任務(wù)設(shè)置成ready
peekReady() 把準(zhǔn)備好的任務(wù)讀取出來
peekDelayed() 把延遲的任務(wù)讀取出來
pauseTube() 給管道設(shè)置延遲
resumeTube() 取消管道延遲
touch() 讓任務(wù)重新計(jì)算ttr時(shí)間,給任務(wù)續(xù)命

生產(chǎn)者producer.php代碼如下:

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

use Pheanstalk\Pheanstalk;

//創(chuàng)建一個(gè)Pheanstalk對(duì)象
$p = new Pheanstalk('192.168.1.222', 11300);

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

//向userReg管道中添加任務(wù),返回任務(wù)ID
//put()方法有四個(gè)參數(shù)
//第一個(gè)任務(wù)的數(shù)據(jù)
//第二個(gè)任務(wù)的優(yōu)先級(jí),值越小,越先處理
//第三個(gè)任務(wù)的延遲
//第四個(gè)任務(wù)的ttr超時(shí)時(shí)間
$id = $p->useTube('userReg')->put(json_encode($data));
//獲取任務(wù)
$job = $p->peek($id);
//查看任務(wù)狀態(tài)
print_r($p->statsJob($job));

消費(fèi)者consumer.php代碼如下:

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

use Pheanstalk\Pheanstalk;

//創(chuàng)建一個(gè)Pheanstalk對(duì)象
$p = new Pheanstalk('192.168.1.222', 11300);

//監(jiān)聽userReg管道,忽略default管道
$job = $p->watch('userReg')->ignore('default')->reserve();

$data = json_decode($job->getData());
//打印任務(wù)中的數(shù)據(jù)
print_r($data);

//最后刪除任務(wù),表示任務(wù)處理完成
$p->delete($job);

更多關(guān)于PHP相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《PHP進(jìn)程與線程操作技巧總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫(kù)操作入門教程》及《php常見數(shù)據(jù)庫(kù)操作技巧匯總

希望本文所述對(duì)大家PHP程序設(shè)計(jì)有所幫助。

相關(guān)文章

最新評(píng)論

衡水市| 吉隆县| 西昌市| 达州市| 和平区| 苏尼特左旗| 正镶白旗| 南部县| 金坛市| 曲阳县| 林芝县| 绵阳市| 肇庆市| 阳信县| 海丰县| 清丰县| 勃利县| 内丘县| 万宁市| 东乌珠穆沁旗| 常山县| 巴南区| 土默特右旗| 安顺市| 遂平县| 康平县| 本溪市| 上饶市| 灵石县| 额济纳旗| 清流县| 厦门市| 马鞍山市| 镇赉县| 建湖县| 丰城市| 太康县| 淮南市| 祥云县| 绥江县| 和顺县|