什麼是佇列,是先進先出的線性表,在具體應用中通常用鍊錶或者陣列來實現,佇列只允許在後端進行插入操作,在前端進行刪除操作。
什麼情況下會用了佇列呢,併發請求又要保證事務的完整性的時候就會用到佇列,當然不排除使用其它更好的方法,知道的不仿說說看。
佇列還可以用於減輕資料庫伺服器壓力,我們可以將不是即時資料放入到佇列中,在資料庫空閒的時候或者間隔一段時間後執行。比如訪問計數器,沒有必要即時的執行訪問增加的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,隊頭和隊尾的指標相同均位於佇列的開始 入隊操作 隊尾指標向後移動,長度加一 出隊操作 隊頭指標向後移動,長度減一 迴圈佇列特點 佇列大小固定,佇列所開闢的記憶體空間可迴圈使用,指...