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读写文件的方法(生成HTML)
Nov 27 PHP
PHP学习之正则表达式
Apr 17 PHP
php加密解密实用类分享
Jan 07 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
Apr 09 PHP
php生成rss类用法实例
Apr 14 PHP
php+ajax实现无刷新分页
Nov 18 PHP
Yii框架上传图片用法总结
Mar 28 PHP
XHProf报告字段含义的解析
May 17 PHP
PHP简单读取PDF页数的实现方法
Jul 21 PHP
PHP简单实现上一页下一页功能示例
Sep 14 PHP
PHP简单实现冒泡排序的方法
Dec 26 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 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
第十五节--Zend引擎的发展
2006/11/16 PHP
php 异常处理实现代码
2009/03/10 PHP
PHP教程 变量定义
2009/10/23 PHP
php输入流php://input使用示例(php发送图片流到服务器)
2013/12/25 PHP
PHP自动生成表单代码分享
2015/06/19 PHP
PHP实现的方程求解示例分析
2016/11/11 PHP
PHP实现的登录,注册及密码修改功能分析
2016/11/25 PHP
PHP实现的超长文本分页显示功能示例
2018/06/04 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
基于jquery实现的可以编辑选择的下拉框的代码
2010/11/19 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
按钮接受回车事件的三种实现方法
2014/06/06 Javascript
PHP和NodeJs开发的应用如何共用Session
2015/04/16 NodeJs
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
JS使用栈判断给定字符串是否是回文算法示例
2019/03/04 Javascript
layer设置maxWidth及maxHeight解决方案
2019/07/26 Javascript
JavaScript 中的六种循环方法
2021/01/06 Javascript
总结网络IO模型与select模型的Python实例讲解
2016/06/27 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
python 换位密码算法的实例详解
2017/07/19 Python
利用python将json数据转换为csv格式的方法
2018/03/22 Python
解决pandas 作图无法显示中文的问题
2018/05/24 Python
python实现连续图文识别
2018/12/18 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
利用Python实现字幕挂载(把字幕文件与视频合并)思路详解
2020/10/21 Python
html5的新增的标签和废除的标签简要概述
2013/02/20 HTML / CSS
Amcal中文官网:澳洲综合性连锁药房
2019/03/28 全球购物
师德师风演讲稿
2014/05/05 职场文书
工作收入住址证明
2014/10/28 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
Pandas实现DataFrame的简单运算、统计与排序
2022/03/31 Python
VW、VH适配移动端的解决方案与常见问题
2023/05/21 HTML / CSS