婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

本文實例講述了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高級編程之消息隊列原理與實現方法詳解
  • PHP PDO和消息隊列的個人理解與應用實例分析
  • php+redis實現消息隊列功能示例
  • PHP加MySQL消息隊列深入理解

標簽:河南 唐山 黃山 南通 隴南 平頂山 通遼 武漢

巨人網絡通訊聲明:本文標題《PHP Beanstalkd消息隊列的安裝與使用方法實例詳解》,本文關鍵詞  PHP,Beanstalkd,消息,隊列,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP Beanstalkd消息隊列的安裝與使用方法實例詳解》相關的同類信息!
  • 本頁收集關于PHP Beanstalkd消息隊列的安裝與使用方法實例詳解的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 慈溪市| 大竹县| 咸丰县| 乌兰浩特市| 锦屏县| 珲春市| 永胜县| 楚雄市| 休宁县| 安国市| 乌海市| 潼关县| 民县| 石家庄市| 个旧市| 惠水县| 荣昌县| 常州市| 分宜县| 华池县| 商南县| 固阳县| 岳阳市| 越西县| 普定县| 富锦市| 沭阳县| 呼伦贝尔市| 黄陵县| 铁岭县| 沁源县| 嘉定区| 八宿县| 波密县| 安远县| 五原县| 海晏县| 衡南县| 类乌齐县| 蒙山县| 西安市|