程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 隊列在編程中的實際應用(php)

隊列在編程中的實際應用(php)

編輯:關於PHP編程

一:隊列的概念、數據結構

隊列(Queue)是運算受到限制的一種線性表。只允許在表的一端進行插入,而在另一端進行刪除元素的線性表。隊尾(rear)是允許插入的一端。隊頭(front)是允許刪除的一端。空隊列是不含元素的空表。

假設有個隊列Q=(a1,a2,…,an),則a1為隊頭元素,an為隊尾元素。元素入隊的次序為a1,a2,…,an,而出隊的次序為a1,a2,…,an。可見隊列的操作是按照先進先出的原則進行的。

其他詳細的介紹請在網上搜索很多資料。

二:PHP的隊列

在PHP中隊列以數組的形式表現。數組中的第一個元素作為隊頭,最後一個元素作為隊尾,這樣就可以操作這個隊列了。

結果就是

網上有很多封裝好的類,可以直接使用。

array_push:將一個或多個單元壓入數組的末尾(入棧)

array_unshift:在數組開頭插入一個或多個單元

array_pop:將數組最後一個單元彈出(出棧)

array_shift:將數組開頭的單元移出數組

三:Ruby Starling

Starling是一個支持MemCache協議的輕量級持久化服務器。Starling是讓創建網絡訪問隊列或者多個隊列異常簡單,也就是說多點和多台機器間的異步工作進程。它是著名微博客網站Twitter開發用來處理大量的隊列消息,以及保持服務的響應。Starling已經在生產環境中使用,不僅是Twitter在使用,FiveRuns同樣在使用。FiveRuns甚至還根據自己的應用做了改進。

Starling和Memcache使用的是一個協議只是端口不一樣。Starling使用的是22122端口,Memcache使用的是11211端口。

Ruby tar xzvf ruby-1.9.1-p0.tar.gz cd ruby-1.9.1-p0 ./configure --prefix=/usr/local/huiyangruby make make install   Gem tar -zxvf rubygems-1.3.6.tgz cd rubygems-1.3.6 ruby setup.rb   Starling gem install memcache-client starling starling starling & //後台執行 starling_top //查看PS信息

接下來你就可以使用隊列做自己的事情啦。Starling和Memcache用法一樣,兩者配合處理更佳。

使用Memcache::addServer可以建立一個memcache連接池。他不同於connect與pconnect他是在有請求是才連接,無則端口連接。

Memcache::connect -- 打開一個到Memcache的連接。

Memcache::pconnect -- 打開一個到Memcache的長連接。

Memcache::close -- 關閉一個Memcache的連接。

Memcache::set -- 保存數據到Memcache服務器上。

Memcache::get -- 提取一個保存在Memcache服務器上的數據。

Memcache::replace -- 替換一個已經存在Memcache服務器上的項目(功能類似Memcache::set)。

Memcache::delete -- 從Memcache服務器上刪除一個保存的項目。

Memcache::flush -- 刷新所有Memcache服務器上保存的項目(類似於刪除所有的保存的項目)。

Memcache::getStats -- 獲取當前Memcache服務器運行的狀態。

四:張宴作品HTTPSQS

HTTPSQS(HTTP Simple Queue Service)是一款基於 HTTP GET/POST 協議的輕量級開源簡單消息隊列服務,使用 Tokyo Cabinet 的 B+Tree Key/Value 數據庫來做數據的持久化存儲。

有興趣的可以看看網址:http://blog.s135.com/httpsqs_1_2/

五:隊列的應用

隊列可以很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可采取隊列來異步插入。另外,還可以將較慢的處理邏輯、有並發數量限制的處理邏輯,通過消息隊列放在後台處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。(文/侯惠陽 PHPer.yang)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved