PHP队列用法实例


Posted in PHP onNovember 05, 2014

本文实例讲述了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程序设计有所帮助。

PHP 相关文章推荐
1.PHP简介
Oct 09 PHP
PHP数据库开发知多少
Oct 09 PHP
php中截取字符串支持utf-8
Jan 18 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
php数字游戏 计算24算法
Jun 10 PHP
PHP字符串的连接的简单实例
Dec 30 PHP
使用php语句将数据库*.sql文件导入数据库
May 05 PHP
php输出指定时间以前时间格式的方法
Mar 21 PHP
WordPress中重置文章循环的rewind_posts()函数讲解
Jan 11 PHP
php+croppic.js实现剪切上传图片功能
Aug 14 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
PHP bin2hex()函数基础实例讲解
Feb 11 PHP
CI框架入门示例之数据库取数据完整实现方法
Nov 05 #PHP
CI框架验证码CAPTCHA辅助函数用法实例
Nov 05 #PHP
PHP操作MySQL事务实例
Nov 05 #PHP
PHP通过插入mysql数据来实现多机互锁实例
Nov 05 #PHP
PHP中使用虚代理实现延迟加载技术
Nov 05 #PHP
PHP实现获取域名的方法小结
Nov 05 #PHP
php调用shell的方法
Nov 05 #PHP
You might like
php+mysql 实现身份验证代码
2010/03/24 PHP
PHP结合JQueryJcrop实现图片裁切实例详解
2014/07/24 PHP
Drupal简体中文语言包安装教程
2014/09/27 PHP
什么是OneThink oneThink后台添加插件步骤
2016/04/13 PHP
PHP使用内置函数生成图片的方法详解
2016/05/09 PHP
PHP编写简单的App接口
2016/08/28 PHP
CakePHP框架Session设置方法分析
2017/02/23 PHP
php注册系统和使用Xajax即时验证用户名是否被占用
2017/08/31 PHP
PHP实现动态创建XML文档的方法
2018/03/30 PHP
jquery实现textarea输入字符控制(仿微博输入控制字符)
2013/04/26 Javascript
JS操作Cookies的小例子
2013/10/15 Javascript
分享Javascript中最常用的55个经典小技巧
2013/11/29 Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
2014/01/02 Javascript
全面解析Bootstrap中transition、affix的使用方法
2016/05/30 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
简单实现js悬浮导航效果
2017/02/05 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
详解Angular2学习笔记之Html属性绑定
2018/01/03 Javascript
Python基础语言学习笔记总结(精华)
2017/11/14 Python
python可视化text()函数使用详解
2020/02/11 Python
如何通过Python3和ssl实现加密通信功能
2020/05/09 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
2020/07/27 Python
基于Python pyecharts实现多种图例代码解析
2020/08/10 Python
python中判断数字是否为质数的实例讲解
2020/12/06 Python
北美Newegg打造的全球尖货海购平台:tt海购
2018/09/28 全球购物
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
工作疏忽、懈怠的检讨书
2014/09/11 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
党的群众路线教育实践活动组织生活会发言材料
2014/10/17 职场文书
继承权公证书范本
2015/01/23 职场文书
幼师辞职信范文大全
2015/05/12 职场文书
教务处干事工作总结
2015/08/14 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
【海涛解说】史上最给力比赛,挑战DOTA极限
2022/04/01 DOTA