php使用佇列 PHP佇列用法例項

2021-10-22 22:50:36 字數 2246 閱讀 4005

什麼是佇列,是先進先出的線性表,在具體應用中通常用鍊錶或者陣列來實現,佇列只允許在後端進行插入操作,在前端進行刪除操作。

什麼情況下會用了佇列呢,併發請求又要保證事務的完整性的時候就會用到佇列,當然不排除使用其它更好的方法,知道的不仿說說看。

佇列還可以用於減輕資料庫伺服器壓力,我們可以將不是即時資料放入到佇列中,在資料庫空閒的時候或者間隔一段時間後執行。比如訪問計數器,沒有必要即時的執行訪問增加的sql,在沒有使用佇列的時候sql語句是這樣的,假設有5個人訪問:

update table1 set count=count+1 where id=1

update table1 set count=count+1 where id=1

update table1 set count=count+1 where id=1

update table1 set count=count+1 where id=1

update table1 set count=count+1 where id=1

而使用佇列這後就可以這樣:

update table1 set count=count+5 where id=1

減少sql請求次數,從而達到減輕伺服器壓力的效果, 當然訪問量不是很大**根本沒有這個必要。

下面乙個佇列類:

* 佇列

* @author jaclon

class queue

private $_queue = array();

protected $cache = null;

protected $queuecachename;

* 構造方法

* @param string $queuename 佇列名稱

function __construct($queuename)

$this->cache =& cache::instance();

$this->queuecachename = 'queue_' . $queuename;

$result = $this->cache->get($this->queuecachename);

if (is_array($result)) {

$this->_queue = $result;

* 將乙個單元單元放入佇列末尾

* @param mixed $value

function enqueue($value)

$this->_queue = $value;

$this->cache->set($this->queuecachename, $this->_queue);

return $this;

* 將佇列開頭的乙個或多個單元移出

* @param int $num

function slicequeue($num = 1)

if (count($this->_queue) < $num) {

$num = count($this->_queue);

$output = array_splice($this->_queue, 0, $num);

$this->cache->set($this->queuecachename, $this->_queue);

return $output;

* 將佇列開頭的單元移出佇列

function dequeue()

$entry = array_shift($this->_queue);

$this->cache->set($this->queuecachename, $this->_queue);

return $entry;

* 返回佇列長度

function size()

return count($this->_queue);

* 返回佇列中的第乙個單元

function peek()

return $this->_queue[0];

* 返回佇列中的乙個或多個單元

* @param int $num

function peeks($num)

if (count($this->_queue) < $num) {

$num = count($this->_queue);

return array_slice($this->_queue, 0, $num);

* 消毀佇列

function destroy()

$this->cache->remove($this->queuecachename);

php佇列教程,PHP佇列用法例項 PHP

什麼是佇列,是先進先出的線性表,在具體應用中通常用鍊錶或者陣列來實現,佇列只允許在後端進行插入操作,在前端進行刪除操作。什麼情況下會用了佇列呢,併發請求又要保證事務的完整性的時候就會用到佇列,當然不排除使用其它更好的方法,知道的不仿說說看。佇列還可以用於減輕資料庫伺服器壓力,我們可以將不是即時資料放...

php使用佇列 php實現佇列

佇列 queue 滿足先進先出 fifo 的規則 下面使用php實現乙個簡單的迴圈佇列模型 初始狀態的佇列,佇列長度為0,隊頭和隊尾的指標相同均位於佇列的開始 入隊操作 隊尾指標向後移動,長度加一 出隊操作 隊頭指標向後移動,長度減一 迴圈佇列特點 佇列大小固定,佇列所開闢的記憶體空間可迴圈使用,指...

PHP佇列用法例項

什麼是佇列,是先進先出的線性表,在具體應用中通常用鍊錶或者陣列來實現,佇列只允許在後端進行插入操作,在前端進行刪除操作。什麼情況下會用了佇列呢,併發請求又要保證事務的完整性的時候就會用到佇列,當然不排除使用其它更好的方法,知道的不仿說說看。佇列還可以用於減輕資料庫伺服器壓力,我們可以將不是即時資料放...