队列在编程中的实际应用(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 相关文章推荐
PHPlet在Windows下的安装
Oct 09 PHP
PHP新手上路(六)
Oct 09 PHP
PHP 批量删除 sql语句
Jun 05 PHP
PHP写MySQL数据 实现代码
Jun 15 PHP
PHP编码规范的深入探讨
Jun 06 PHP
PHP引用(&)各种使用方法实例详解
Mar 20 PHP
查找php配置文件php.ini所在路径的二种方法
May 26 PHP
php中替换字符串中的空格为逗号','的方法
Jun 09 PHP
PHP中设置一个严格30分钟过期Session面试题的4种答案
Jul 30 PHP
WordPress导航菜单的滚动和淡入淡出效果的实现要点
Dec 14 PHP
Laravel多用户认证系统示例详解
Mar 13 PHP
PHP array_shift()用法实例分析
Jan 07 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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
浅析ThinkPHP的模板输出功能
2014/07/01 PHP
PHP array_key_exists检查键名或索引是否存在于数组中的实现方法
2016/06/13 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
jQuery Ajax调用WCF服务详细教程
2015/03/31 Javascript
JavaScript使用指针操作实现约瑟夫问题实例
2015/04/07 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
JS当前页面登录注册框,固定DIV,底层阴影的实例代码
2016/09/29 Javascript
webpack搭建vue 项目的步骤
2017/12/27 Javascript
vue-cli创建的项目,配置多页面的实现方法
2018/03/15 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
VsCode与Node.js知识点详解
2019/09/05 Javascript
Python中的lstrip()方法使用简介
2015/05/19 Python
Python使用struct处理二进制的实例详解
2017/09/11 Python
python操作excel的包(openpyxl、xlsxwriter)
2018/06/11 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
在pycharm中显示python画的图方法
2019/08/31 Python
django框架使用views.py的函数对表进行增删改查内容操作详解【models.py中表的创建、views.py中函数的使用,基于对象的跨表查询】
2019/12/12 Python
python中@property的作用和getter setter的解释
2020/12/22 Python
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
某公司部分笔试题
2013/11/05 面试题
编程输出如下图形
2013/11/24 面试题
学前教育专业毕业生自荐信
2013/10/03 职场文书
法学毕业生自我鉴定
2013/11/08 职场文书
班长演讲稿范文
2014/04/24 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
高三毕业评语
2014/12/31 职场文书
2015年敬老月活动总结
2015/03/27 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
中学总务处工作总结
2015/08/12 职场文书
《悲惨世界》:比天空更广阔的是人的心灵
2020/01/16 职场文书
html+css实现环绕倒影加载特效
2021/07/07 HTML / CSS