佇列在程式設計中的實際應用(php)-php技巧

來源:文萃谷 2.78W
  佇列在程式設計中的實際應用(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埠。

Rubytar xzvf ruby-1.9.1-p0./configure --prefix=/usr/local/huiyangrubymake make installGemtar -zxvf d rubygems-1.3.6ruby arlinggem install memcache-client starlingstarlingstarling & //後臺執行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:: -- 從Memcache伺服器上刪除一個儲存的專案。

Memcache::flush -- 重新整理所有Memcache伺服器上儲存的專案(類似於刪除所有的儲存的專案)。

Memcache::getStats -- 獲取當前Memcache伺服器執行的狀態。

四:張宴作品HTTPSQS

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

五:佇列的應用

佇列可以很好地非同步處理資料傳送和儲存,當你頻繁地向資料庫中插入資料、頻繁地向搜尋引擎提交資料,就可採取佇列來非同步插入。另外,還可以將較慢的處理邏輯、有併發數量限制的處理邏輯,通過訊息佇列放在後臺處理,例如FLV視訊轉換、傳送手機簡訊、傳送電子郵件等。

熱門標籤