HTTPSQS:基於HTTP協議的輕量級開源簡單隊列服務(安裝php客戶端)

HTTPSQS 客戶端php

PHP 客戶端 使用 httpsqs的方式:apache

A、PHP 客戶端擴展(第三方提供,詳情請訪問:http://code.google.com/p/php-httpsqs-client/json

 

     一 、 安裝說明數組

       cd /usr/local服務器

       mkdir php_httpsqs_client
      cd php_httpsqs_client
函數

    下載地址  :  wget  http://php-httpsqs-client.googlecode.com/files/php_httpsqs_client_0.2.1.tar.gz大數據

      tar zxvf php_httpsqs_client_0.2.1.tar.gz
     /usr/local/php/bin/phpize
  ./configure--enable-httpsqs--with-php-config=/usr/local/php/bin/php-config
  make&&make install
   #接着在php.ini中添加一行
  extension=httpsqs.so;
google

  重啓apachespa

 /usr/local/apache/bin/apachectl restart.net

查看phpinfo(),若是存在httpsqs,則配置成功;

 

2、在程序中使用httpsqs的實例

// 取數據Daemon

//方式一: 函數調用

$hr=httpsqs_connect($host,$port);
while(1){
    $data=httpsqs_get($hr,$queuename,$charset);
   if($data===false){
       sleep(1);
   }else{
     // do something...
   }
}

//方式一: 對象調用
$hr=newHttpSQS($host,$port);
while(1){
    $data=$hr->get($queuename,$charset);
   if($data===false){
        sleep(1);
   }else{
     // do something...
   }
}

 

// 寫數據

//方式一:函數調用

$hr=httpsqs_connect($hort,$port);
httpsqs_put($hr,$queuename,$data,$charset);

//方式一:對象調用
$hr=newHttpSQS($hort,$port);
$hr->put($queuename,$data,$charset);

 

3、函數說明

/**
 * 建立httpsqs鏈接
 * @param string $host 服務器地址,能夠爲空,默認爲127.0.0.1
 * @param int    $port 服務器端口,能夠爲空,默認爲1218
 * @return resource
 */
$hr = httpsqs_connect("127.0.0.1",1218);

 

/**
 * 寫入隊列數據
 * @param resource $hr      服務器鏈接句柄
 * @param string   $queue   隊列名稱
 * @param string   $data    寫入數據
 * @param string   $charset 字符集,能夠爲空,默認爲utf-8
 * @return boolean
 */
$putRes = httpsqs_put($hr,"testQueue","This is a test Data","UTF-8");

 

/**
 * 獲取隊列最後一條數據
 * @param resource $hr
 * @param string   $queue
 * @param boolean  $return_array 是否返回數組,能夠爲空,默認爲false
          返回數組格式:array('pos'=>'隊列插入點', 'data'=>'數據值')
 * @param string   $charset 能夠爲空
 * @return mixed
 */
$content = httpsqs_get($hr,"testQueue",true,"UTF-8");

 

/**
 * 獲取隊列狀態
 * @param resource $hr
 * @param string   $queue
 * @param boolean  $return_json 是否返回狀態的json格式,能夠爲空,默認爲false
 * @return string
 */
$status = httpsqs_status($hr,"testQueue",true);

 

 

/**
 * 獲取隊列某個點數據
 * @param resource $hr
 * @param string   $queue
 * @param int      $pos 要獲取的某條數據的位置
 * @param string   $charset 能夠爲空
 * @return string
 */
$posData = httpsqs_view($hr,"testQueue",10,"UTF-8");

 

 

/**
 * 隊列重置
 * @param resource $hr
 * @param string   $queue
 * @return boolean
 */
$resetRes = httpsqs_reset($hr,"testQueue");

 

 

/**
 * 設置隊列最大數據條數
 * @param resource $hr
 * @param string   $queue
 * @param int      $maxqueue 隊列最大數據條數
 * @return boolean
 */
$maxqueueRes = httpsqs_maxqueue($hr,"testQueue",10000);

 

 

/**
 * 修改定時刷新內存緩衝區內容到磁盤的間隔時間
 * @param resource $hr
 * @param string   $queue
 * @param int      $synctime 間隔時間
 * @return boolean
 */
$synctimeRes = httpsqs_synctime($hr,"testQueue",10);

 

4、對象調用

// 參數與httpsqs_connect對應
$hr =newHttpSQS($host, $port);

// 參數與httpsqs_get對應
$hr->get($queuename, $return_array, $charset);

// 參數與httpsqs_put對應
$hr->put($queuename, $data, $charset);

// 參數與httpsqs_status對應
$hr->status($queuename, $return_json);

// 參數與httpsqs_view對應
$hr->view($queuename, $pos);

// 參數與httpsqs_reset對應
$hr->reset($queuename);

// 參數與httpsqs_maxqueue對應
$hr->maxqueue($queuename);

// 參數與httpsqs_synctime對應
$hr->synctime($queuename);

 

用函數和對象調用的方式都是能夠的;

 

B、普通 PHP 客戶端文件:

  查看 PHP Class 源代碼httpsqs_client.php(http://code.google.com/p/httpsqs/source/browse/trunk/client/php/httpsqs_client.php)

用法:

 

<?php

......

include_once("httpsqs_client.php");

$httpsqs = new httpsqs; 

/* -----不使用Keep-Alive的短鏈接方式----- */ 

 /*  1. 將文本信息放入一個隊列     若是入隊列成功,返回布爾值:true      若是入隊列失敗,返回布爾值:false  */

$result = $httpsqs->put($host, $port, $charset, $name, $data); 

/*  2. 從一個隊列中取出文本信息     返回該隊列的內容    

若是沒有未被取出的隊列,則返回文本信息:HTTPSQS_GET_END    
 

若是發生錯誤,返回布爾值:false 
 

*/ 

 $result = $httpsqs->get($host, $port, $charset, $name);

/*  3. 從一個隊列中取出文本信息和當前隊列讀取點Pos     返回數組示 例:array("pos" => 7, "data" =&gt; "text message")     若是沒有未被取出的隊列, 則返回數組:array("pos" => 0, "data" =&gt; "HTTPSQS_GET_END")     若是發生錯 誤,返回布爾值:false */  

$result = $httpsqs->gets($host, $port, $charset, $name);

/*  4. 查看隊列狀態(普通方式) */

$result = $httpsqs->status($host, $port, $charset, $name);

/*  5. 查看隊列狀態(JSON方式)     返回示例: {"name":"queue_name","maxqueue":5000000,"putpos":130,"putlap":1,"getpos":120,"getlap":1,"unread":10} */ 

$result = $httpsqs->status_json($host, $port, $charset, $name);

/*  6. 查看指定隊列位置點的內容     返回指定隊列位置點的內容。 */

$result = $httpsqs->view($host, $port, $charset, $name, $pos);

/*  7. 重置指定隊列     若是重置隊列成功,返回布爾值:true      若是重置隊列失敗,返回布爾值:false  */

$result = $httpsqs->reset($host, $port, $charset, $name);

/*  8. 更改指定隊列的最大隊列數量    若是更改爲功,返回布爾值:true    若是更改操做被取消,返回布爾值:false */

$result = $httpsqs->maxqueue($host, $port, $charset, $name, $num);

/* 9. 修改定時刷新內存緩衝區內容到磁盤的間隔時間    若是更改爲功,返回布爾值:true    若是更改操做被取消,返回布爾值:false */

$result = $httpsqs->synctime($host, $port, $charset, $name, $num);

 

/* -----使用Keep-Alive的長鏈接方式 (在命令行模式下速度很是快)----- */

$result = $httpsqs->pput($host, $port, $charset, $name, $data); 

$result = $httpsqs->pget($host, $port, $charset, $name);

 $result = $httpsqs->pgets($host, $port, $charset, $name);

 $result = $httpsqs->pstatus($host, $port, $charset, $name);  

$result = $httpsqs->pstatus_json($host, $port, $charset, $name); 

$result = $httpsqs->pview($host, $port, $charset, $name, $pos);

 $result = $httpsqs->preset($host, $port, $charset, $name);

 $result = $httpsqs->pmaxqueue($host, $port, $charset, $name, $num); 

$result = $httpsqs->psynctime($host, $port, $charset, $name, $num);

?>

相關文章
相關標籤/搜索