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 相关文章推荐
PHP 字符串编码截取函数(兼容utf-8和gb2312)
May 02 PHP
php for 循环语句使用方法详细说明
May 09 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
ThinkPHP缓存方法S()概述
Jun 13 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
php实现的用户查询类实例
Jun 18 PHP
PHP+jQuery翻板抽奖功能实现
Oct 19 PHP
Smarty保留变量用法分析
May 23 PHP
php 在字符串指定位置插入新字符的简单实现
Jun 28 PHP
PHP内存缓存功能memcached示例
Oct 19 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
Cookie跨域问题解决方案代码示例
Nov 24 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
第三节 定义一个类 [3]
2006/10/09 PHP
彻底杜绝PHP的session cookie错误
2009/08/09 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
2011/11/09 PHP
PHP spl_autoload_register实现自动加载研究
2011/12/06 PHP
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
PHP将XML转数组过程详解
2013/11/13 PHP
php中json_encode UTF-8中文乱码的更好解决方法
2014/09/28 PHP
php自定义加密与解密程序实例
2014/12/31 PHP
php绘制一条直线的方法
2015/01/24 PHP
PHP的pcntl多进程用法实例
2015/03/19 PHP
深入浅析用PHP实现MVC
2016/03/02 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
PHP排序算法之归并排序(Merging Sort)实例详解
2018/04/21 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
2018/06/04 PHP
img onload事件绑定各浏览器均可执行
2012/12/19 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
js实现局部页面打印预览原理及示例代码
2014/07/03 Javascript
关闭页面window.location事件未执行的原因及解决方法
2014/09/01 Javascript
JS实现横向拉伸动感伸缩菜单效果代码
2015/09/04 Javascript
jQuery实现图片轮播效果代码(基于jquery.pack.js插件)
2016/06/02 Javascript
domReady的实现案例
2016/11/23 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
vue-cli3 配置开发与测试环境详解
2019/05/17 Javascript
Vue实现购物车实例代码两则
2020/05/30 Javascript
js用正则表达式筛选年月日的实例方法
2021/01/04 Javascript
[02:07]2017国际邀请赛中国区预选赛直邀战队前瞻
2017/06/23 DOTA
[48:35]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 TNC vs Optic
2018/04/03 DOTA
Windows下搭建python开发环境详细步骤
2020/07/20 Python
python画折线图的程序
2018/07/26 Python
Python从list类型、range()序列简单认识类(class)【可迭代】
2019/05/31 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
优秀教师主要事迹
2014/02/01 职场文书
保安队长职务说明书
2014/02/23 职场文书
幼儿园秋游感想
2014/03/12 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
劳动仲裁调解书
2015/05/20 职场文书