PHP队列类

/** * Created by PhpStorm. * User: LAMP—Q哥 * Date: 2017/8/3 * Time: 12:58 */class Queue { private $_queue = []; protected $cache = null; protected $queuecachename; /** * 构造方法 * Queue constructor. * @param $queuename */ public 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 $value * @return $this */ public function enQueue($value) { $this->_queue[]=$value; $this->cache->set($this->queuecachename,$this->_queue); return $this; } /** * 将队列开头的一个或多个单元移除 * @param int $num * @return array */ public function sliceQueue($num = 1) { if(count($this->_queue)<$num) { $num = count($this->_queue); } $output = array_slice($this->_queue,0,$num); $this->cache->set($this->queuecachename,$this->_queue); return $output; } /** * 将队列开头的单元移出队列 * @return mixed */ public function deQueue() { $entry = array_shift($this->_queue); $this->cache->set($this->queuecachename,$this->_queue); return $entry; } /** * 获取队列的长度 * @return int */ public function size() { return count($this->_queue); } /** * 获取队列中的第一个 * @return mixed */ public function peek() { return $this->_queue[0]; } /** * 返回队列中的一个或者多个单元 * @param $num * @return array */ public function peeks($num){ if(count($this->_queue)<$num) { $num = count($this->_queue); } return array_slice($this->_queue,0,$num); } /** * 销毁队列 */ public function destroy() { $this->cache->remove($this->queuecachename); }}

相关文章