php實際運用,佇列在程式設計中的實際應用 php

2021-10-25 21:09:25 字數 2268 閱讀 6692

一:佇列的概念、資料結構

佇列(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

gemtar -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 ****** queue service)是一款基於 http get/post 協議的輕量級開源簡單訊息佇列服務,使用 tokyo cabinet 的 b+tree key/value 資料庫來做資料的持久化儲存。

有興趣的可以看看**:

五:佇列的應用

PHP中關於佇列的實際應用

一 佇列的概念 資料結構 佇列 queue 是運算受到限制的一種線性表。只允許在表的一端進行插入,而在另一端進行刪除元素的線性表。隊尾 rear 是允許插入的一端。隊頭 front 是允許刪除的一端。空佇列是不含元素的空表。假設有個佇列q a1,a2,an 則a1為隊頭元素,an為隊尾元素。元素入隊...

Magic Number 在程式設計中的使用

magic no,好方法!假設我們有了一大塊緩衝區 以下稱buffer say,1m,這一塊緩衝區將用來滿足很多小的順序到來的記憶體請求,並且,其釋放先後次序和申請次序一致。我們可以考慮採用環形佇列來解決這個問題。為了記錄分配出去的記憶體塊 以下稱buflet 的大小 狀態等資訊,需要對記憶體區進行...

位運算在 PHP 實際專案當中的運用

來回顧一下這些基礎知識,同時也會講位運算在 php 實際專案當中的高階技巧。一 位運算知識回顧 php 手冊當中,專門對位運算及位運算子進行了使用介紹。按位與運算子 之所以稱為位運算,指的是在運算過程中,我們會把兩組需要位運算的數值進行二進位製化,然後兩組二進位制的數字從低位向左對齊。這裡的位指的是...