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

來源:互聯網
上載者:User

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

?>


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.