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" => "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);
?>