淺析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:將數組開頭的單元移出數組spa

Ruby Starling:

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

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

隊列的應用:

隊列能夠很好地異步處理數據傳送和存儲,當你頻繁地向數據庫中插入數據、頻繁地向搜索引擎提交數據,就可採起隊列來異步插入。另外,還能夠將較慢的處理邏輯、有併發數量限制的處理邏輯,經過消息隊列放在後臺處理,例如FLV視頻轉換、發送手機短信、發送電子郵件等。

相關文章
相關標籤/搜索