队列在编程中的实际应用(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 相关文章推荐
支持oicq头像的留言簿(一)
Oct 09 PHP
php 获取可变函数参数的函数
Aug 26 PHP
解析PHP将对象转换成数组的方法(兼容多维数组类型)
Jun 21 PHP
php生成随机颜色的方法
Nov 13 PHP
php实现遍历目录并删除指定文件中指定内容
Jan 21 PHP
浅析Yii2缓存的使用
May 10 PHP
round robin权重轮循算法php实现代码
May 28 PHP
Laravel日志用法详解
Oct 09 PHP
PHP laravel中的多对多关系实例详解
Jun 07 PHP
Laravel如何使用Redis共享Session
Feb 23 PHP
Mac系统下安装PHP Xdebug
Mar 30 PHP
laravel高级的Join语法详解以及使用Join多个条件
Oct 16 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
php 无法加载mysql的module的时候的配置的解决方案引发的思考
2012/01/27 PHP
PHP中使用unset销毁变量并内存释放问题
2012/07/05 PHP
PHP中的str_repeat函数在JavaScript中的实现
2013/09/16 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
基于PHP微信红包的算法探讨
2016/07/21 PHP
PHP实现读取文件夹及批量重命名文件操作示例
2019/04/15 PHP
JQuery获取表格数据示例代码
2014/05/26 Javascript
jQuery搜索同辈元素方法
2015/02/10 Javascript
jquery+CSS3实现淘宝移动网页菜单效果
2015/08/31 Javascript
JS DOM实现鼠标滑动图片效果
2020/09/17 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
ajax图片上传,图片异步上传,更新实例
2016/12/30 Javascript
解决vue-cli中stylus无法使用的问题方法
2017/06/19 Javascript
解决vue页面DOM操作不生效的问题
2018/03/17 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
详解基于Vue,Nginx的前后端不分离部署教程
2018/12/04 Javascript
详解Vue+ElementUI从零开始搭建自己的网站(一、环境搭建)
2019/04/30 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
layer页面跳转,获取html子节点元素的值方法
2019/09/27 Javascript
在vue中封装的弹窗组件使用队列模式实现方法
2020/07/23 Javascript
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
Python设计模式之装饰模式实例详解
2019/01/21 Python
html5教程画矩形代码分享
2013/12/04 HTML / CSS
介绍一下mysql的日期和时间函数
2013/03/28 面试题
会计助理的岗位职责
2013/11/29 职场文书
工作中个人的自我评价
2013/12/31 职场文书
优秀大学生求职自荐信范文
2014/04/19 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
2014年教师节讲话稿5篇
2014/09/10 职场文书
三严三实学习心得体会
2014/10/13 职场文书
商场圣诞节活动总结
2015/05/06 职场文书
工作简报格式范文
2015/07/21 职场文书
2019新员工心得体会
2019/06/25 职场文书
利用python调用摄像头的实例分析
2021/06/07 Python
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS