队列在编程中的实际应用(php)


Posted in PHP onSeptember 04, 2010

一:队列的概念、数据结构

队列(Queue)是运算受到限制的一种线性表。只允许在表的一端进行插入,而在另一端进行删除元素的线性表。队尾(rear)是允许插入的一端。队头(front)是允许删除的一端。空队列是不含元素的空表。

假设有个队列Q=(a1,a2,…,an),则a1为队头元素,an为队尾元素。元素入队的次序为a1,a2,…,an,而出队的次序为a1,a2,…,an。可见队列的操作是按照先进先出的原则进行的。

队列在编程中的实际应用(php)

其他详细的介绍请在网上搜索很多资料。

二:PHP的队列

在PHP中队列以数组的形式表现。数组中的第一个元素作为队头,最后一个元素作为队尾,这样就可以操作这个队列了。

队列在编程中的实际应用(php)

结果就是

队列在编程中的实际应用(php)

网上有很多封装好的类,可以直接使用。

array_push:将一个或多个单元压入数组的末尾(入栈)

array_unshift:在数组开头插入一个或多个单元

array_pop:将数组最后一个单元弹出(出栈)

array_shift:将数组开头的单元移出数组

三:Ruby Starling

Starling是一个支持MemCache协议的轻量级持久化服务器。Starling是让创建网络访问队列或者多个队列异常简单,也就是说多点和多台机器间的异步工作进程。它是著名微博客网站Twitter开发用来处理大量的队列消息,以及保持服务的响应。Starling已经在生产环境中使用,不仅是Twitter在使用,FiveRuns同样在使用。FiveRuns甚至还根据自己的应用做了改进。

Starling和Memcache使用的是一个协议只是端口不一样。Starling使用的是22122端口,Memcache使用的是11211端口。

Ruby tar xzvf ruby-1.9.1-p0.tar.gz cd ruby-1.9.1-p0 ./configure --prefix=/usr/local/huiyangruby make make install   Gem tar -zxvf rubygems-1.3.6.tgz cd rubygems-1.3.6 ruby setup.rb   Starling gem install memcache-client starling starling starling & //后台执行 starling_top //查看PS信息

接下来你就可以使用队列做自己的事情啦。Starling和Memcache用法一样,两者配合处理更佳。

队列在编程中的实际应用(php)

使用Memcache::addServer可以建立一个memcache连接池。他不同于connect与pconnect他是在有请求是才连接,无则端口连接。

Memcache::connect -- 打开一个到Memcache的连接。

Memcache::pconnect -- 打开一个到Memcache的长连接。

Memcache::close -- 关闭一个Memcache的连接。

Memcache::set -- 保存数据到Memcache服务器上。

Memcache::get -- 提取一个保存在Memcache服务器上的数据。

Memcache::replace -- 替换一个已经存在Memcache服务器上的项目(功能类似Memcache::set)。

Memcache::delete -- 从Memcache服务器上删除一个保存的项目。

Memcache::flush -- 刷新所有Memcache服务器上保存的项目(类似于删除所有的保存的项目)。

Memcache::getStats -- 获取当前Memcache服务器运行的状态。

四:张宴作品HTTPSQS

HTTPSQS(HTTP Simple Queue Service)是一款基于 HTTP GET/POST 协议的轻量级开源简单消息队列服务,使用 Tokyo Cabinet 的 B+Tree Key/Value 数据库来做数据的持久化存储。

有兴趣的可以看看网址:http://blog.s135.com/httpsqs_1_2/

五:队列的应用

队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。(文/侯惠阳 PHPer.yang)

PHP 相关文章推荐
php str_pad() 将字符串填充成指定长度的字符串
Feb 23 PHP
Joomla下利用configuration.php存储简单数据
May 19 PHP
php网站地图生成类示例
Jan 13 PHP
PHP资源管理框架Assetic简介
Jun 12 PHP
php时间戳格式化显示友好的时间函数分享
Oct 21 PHP
php简单实现无限分类树形列表的方法
Mar 27 PHP
PHP实现简单搜歌的方法
Jul 28 PHP
php获取一定范围内取N个不重复的随机数
May 28 PHP
php使用Jpgraph创建折线图效果示例
Feb 15 PHP
PHP实现数据库的增删查改功能及完整代码
Apr 18 PHP
PHP实现数组和对象的相互转换操作示例
Mar 20 PHP
PHP实现的多进程控制demo示例
Jul 22 PHP
php生成随机密码的三种方法小结
Sep 04 #PHP
PHP安全技术之 实现php基本安全
Sep 04 #PHP
小文件php+SQLite存储方案
Sep 04 #PHP
PHP中文件上传的一个问题
Sep 04 #PHP
PHP程序员面试 切忌急功近利(更需要注重以后的发展)
Sep 01 #PHP
PHP开发需要注意的安全问题
Sep 01 #PHP
php中函数的形参与实参的问题说明
Sep 01 #PHP
You might like
星际争霸任务指南——人族
2020/03/04 星际争霸
php学习笔记 PHP面向对象的程序设计
2011/06/13 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
一个简单的JS鼠标悬停特效具体方法
2013/06/17 Javascript
jQuery中大家不太了解的几个方法
2015/03/04 Javascript
javascript中的altKey 和 Event属性大全
2015/11/06 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
Vue响应式原理详解
2017/04/18 Javascript
微信小程序 slider的简单实例
2017/04/19 Javascript
Vue如何引入远程JS文件
2017/04/20 Javascript
微信小程序实现倒计时调用相机自动拍照功能
2018/06/10 Javascript
nodejs实现日志读取、日志查找及日志刷新的方法分析
2019/05/20 NodeJs
Vuex中实现数据状态查询与更改
2019/11/08 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python中input与raw_input 之间的比较
2017/08/20 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python实现数据分析与建模
2019/07/11 Python
python2使用bs4爬取腾讯社招过程解析
2019/08/14 Python
django-xadmin根据当前登录用户动态设置表单字段默认值方式
2020/03/13 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Python将字典转换为XML的方法
2020/08/01 Python
python进度条显示-tqmd模块的实现示例
2020/08/23 Python
用CSS3实现瀑布流布局的示例代码
2017/11/10 HTML / CSS
Html5上传图片 移动端、PC端通用代码
2016/06/08 HTML / CSS
高山背包:High Sierra
2017/11/23 全球购物
印尼在线旅游门户网站:NusaTrip
2019/11/01 全球购物
Bose英国官方网站:美国知名音响品牌
2020/01/26 全球购物
Bandier官网:奢侈、时尚前卫的健身服装首选目的地
2020/07/05 全球购物
2014年采购工作总结
2014/11/20 职场文书
2015年班级元旦晚会活动总结
2014/11/28 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
python如何为list实现find方法
2022/05/30 Python