HTTPSQS 用戶端
PHP 用戶端 使用 httpsqs的方式:
A、PHP 用戶端擴充功能(第三方提供,詳情請訪問:http://code.google.com/p/php-httpsqs-client/)
一 、 安裝說明
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;
重啟apache
/usr/local/apache/bin/apachectl restart
查看phpinfo(),如果存在httpsqs,則配置成功;
二、在程式中使用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);
三、函數說明
/**
* 建立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);
四、對象調用
// 參數與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" => "text message") 如果沒有未被取出的隊列,則返回數組:array("pos" => 0, "data" => "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);
?>