国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP隊列用法實例

2024-05-04 23:26:54
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了PHP隊列用法,以實例形式詳細講述了PHP隊列的實現與各種常用的操作,非常具有參考借鑒價值,需要的朋友可以參考下
 
 

本文實例講述了PHP隊列用法。分享給大家供大家參考。具體分析如下:

什么是隊列,是先進先出的線性表,在具體應用中通常用鏈表或者數組來實現,隊列只允許在后端進行插入操作,在前端進行刪除操作。

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

隊列還可以用于減輕數據庫服務器壓力,我們可以將不是即時數據放入到隊列中,在數據庫空閑的時候或者間隔一段時間后執行。比如訪問計數器,沒有必要即時的執行訪問增加的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程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 开远市| 宣城市| 大邑县| 奉节县| 迁安市| 龙川县| 泰来县| 遂平县| 高淳县| 福海县| 香格里拉县| 陇南市| 桂平市| 高淳县| 麻城市| 海原县| 宁国市| 获嘉县| 秦安县| 辉南县| 双桥区| 西吉县| 东光县| 高碑店市| 新蔡县| 钦州市| 临朐县| 蓬溪县| 电白县| 昌乐县| 东乌珠穆沁旗| 阳江市| 常山县| 通州区| 察雅县| 福安市| 聂拉木县| 兴城市| 辰溪县| 聂拉木县| 依兰县|