濮阳杆衣贸易有限公司

主頁 > 知識庫 > PHP Beanstalkd消息隊列的安裝與使用方法實例詳解

PHP Beanstalkd消息隊列的安裝與使用方法實例詳解

熱門標(biāo)簽:騰訊外呼管理系統(tǒng) 山西回撥外呼系統(tǒng) 青島語音外呼系統(tǒng)招商 揚州地圖標(biāo)注app 百應(yīng)電話機器人服務(wù) 河南電銷卡外呼系統(tǒng)哪家強 山西探意電話機器人 昭通辦理400電話 岳陽外呼型呼叫中心系統(tǒng)在哪里

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

一、Beanstalkd是什么?

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

二、Beanstalkd特性

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

三、Beanstalkd核心元素

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

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

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

delayed 延遲狀態(tài)
ready 準(zhǔn)備好狀態(tài)
reserved 消費者把任務(wù)讀出來,處理時
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

啟動beanstalkd

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

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

六、下載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當(dāng)前的狀態(tài)信息
var_dump($p->stats());

七、Pheanstalk使用方法

維護方法

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

生產(chǎn)者方法

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

消費者方法

watch() 監(jiān)聽管道,可以同時監(jiān)聽多個管道
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ù)重新計算ttr時間,給任務(wù)續(xù)命

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

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

use Pheanstalk\Pheanstalk;

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

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

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

消費者consumer.php代碼如下:

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

use Pheanstalk\Pheanstalk;

//創(chuàng)建一個Pheanstalk對象
$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進程與線程操作技巧總結(jié)》、《PHP網(wǎng)絡(luò)編程技巧總結(jié)》、《PHP基本語法入門教程》、《PHP數(shù)組(Array)操作技巧大全》、《php字符串(string)用法總結(jié)》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》

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

您可能感興趣的文章:
  • PHP高級編程之消息隊列原理與實現(xiàn)方法詳解
  • PHP PDO和消息隊列的個人理解與應(yīng)用實例分析
  • php+redis實現(xiàn)消息隊列功能示例
  • PHP加MySQL消息隊列深入理解

標(biāo)簽:河南 唐山 黃山 南通 隴南 平頂山 通遼 武漢

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《PHP Beanstalkd消息隊列的安裝與使用方法實例詳解》,本文關(guān)鍵詞  PHP,Beanstalkd,消息,隊列,的,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《PHP Beanstalkd消息隊列的安裝與使用方法實例詳解》相關(guān)的同類信息!
  • 本頁收集關(guān)于PHP Beanstalkd消息隊列的安裝與使用方法實例詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    大厂| 霸州市| 康马县| 仁怀市| 龙山县| 济阳县| 紫金县| 揭西县| 乐东| 阆中市| 开封市| 科技| 白水县| 大冶市| 金堂县| 磴口县| 玉溪市| 马公市| 农安县| 吉隆县| 遵义县| 东乡| 正镶白旗| 马关县| 迭部县| 卓尼县| 平利县| 湾仔区| 康乐县| 卢龙县| 囊谦县| 衢州市| 天水市| 南康市| 长沙县| 金湖县| 汽车| 定远县| 凤庆县| 兴隆县| 垣曲县|