队列在编程中的实际应用(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 相关文章推荐
为查询结果建立向后/向前按钮
Oct 09 PHP
深入解析php模板技术原理【一】
Jan 10 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP代码保护--Zend Guard的使用详解
Jun 03 PHP
PHP分页效率终结版(推荐)
Jul 01 PHP
php异常处理使用示例
Feb 25 PHP
PHP获取栏目的所有子级和孙级栏目的ID号示例
Apr 01 PHP
PHP开源开发框架ZendFramework使用中常见问题说明及解决方案
Jun 12 PHP
PHP内核探索之变量
Dec 22 PHP
php抽象方法和抽象类实例分析
Dec 07 PHP
php框架CodeIgniter使用redis的方法分析
Apr 13 PHP
postman的安装与使用方法(模拟Get和Post请求)
Aug 06 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
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
php 使用html5实现多文件上传实例
2016/10/24 PHP
php 数据结构之链表队列
2017/10/17 PHP
PHP中将一个字符串部分字符用星号*替代隐藏的实现代码
2019/09/08 PHP
使用jquery实现简单的ajax
2013/07/08 Javascript
Jquery 在页面加载后执行的几种方式
2014/03/14 Javascript
通过jquery 获取URL参数并进行转码
2014/08/18 Javascript
javascript中String对象的slice()方法分析
2014/12/20 Javascript
详解JavaScript ES6中的Generator
2015/07/28 Javascript
聊一聊JavaScript作用域和作用域链
2016/05/03 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
Express之托管静态文件的方法
2018/06/01 Javascript
vue src动态加载请求获取图片的方法
2018/10/17 Javascript
vue 中基于html5 drag drap的拖放效果案例分析
2018/11/01 Javascript
微信小程序实现收货地址左滑删除
2020/11/18 Javascript
vue video和vue-video-player实现视频铺满教程
2020/10/30 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
使用Python操作MySQL的一些基本方法
2015/08/16 Python
python爬虫获取淘宝天猫商品详细参数
2020/06/23 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
Python如何实现定时器功能
2020/05/28 Python
tensorflow图像裁剪进行数据增强操作
2020/06/30 Python
PyCharm配置anaconda环境的步骤详解
2020/07/31 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
清除canvas画布内容(点擦除+线擦除)
2020/08/12 HTML / CSS
小狗电器官方商城:中国高端吸尘器品牌
2017/03/29 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
十八大闭幕感言
2014/01/22 职场文书
2014年最新党员对照检查材料汇总
2014/09/15 职场文书
法英专业大学生职业生涯规划范文:衡外情,量己力!
2014/09/23 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
乡镇法制宣传日活动总结
2015/05/05 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js