队列在编程中的实际应用(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 相关文章推荐
调整优化您的LAMP应用程序的5种简单方法
Jun 26 PHP
Thinkphp搭建包括JS多语言的多语言项目实现方法
Nov 24 PHP
PHP生成条形图的方法
Dec 10 PHP
php+xml编程之xpath的应用实例
Jan 24 PHP
详解PHP对数组的定义以及数组的创建方法
Nov 27 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
Dec 23 PHP
微信支付开发交易通知实例
Jul 12 PHP
PHP简单数据库操作类实例【支持增删改查及链式操作】
Oct 10 PHP
PHP实现导出excel数据的类库用法示例
Oct 15 PHP
php输出文字乱码的解决方法
Oct 04 PHP
laravel框架模型中非静态方法也能静态调用的原理分析
Nov 23 PHP
PHP safe_mode开启对于PHP系统函数有什么影响
Nov 10 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笔记之:数据类型与常量的使用分析
2013/05/14 PHP
joomla jce editor 解决上传中文名文件失败问题
2013/06/09 PHP
php中函数前加&符号的作用分解
2014/07/08 PHP
用 Composer构建自己的 PHP 框架之构建路由
2014/10/30 PHP
PHP打开和关闭文件操作函数总结
2014/11/18 PHP
写一段简单的PHP建立文件夹代码
2015/01/06 PHP
PHP连接access数据库
2015/03/27 PHP
composer.lock文件的作用
2016/02/03 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
[Web]防止用户复制页面内容和另存页面的方法
2009/02/06 Javascript
js输出列表实现代码
2010/09/12 Javascript
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
js拦截alert对话框另类应用
2013/01/16 Javascript
javascript动态添加样式(行内式/嵌入式/外链式等规则)
2013/06/24 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
一步一步封装自己的HtmlHelper组件BootstrapHelper(三)
2016/09/14 Javascript
javascript匀速动画和缓冲动画详解
2016/10/20 Javascript
详解nodejs 文本操作模块-fs模块(一)
2016/12/22 NodeJs
Vue.Draggable实现拖拽效果
2020/07/29 Javascript
微信小程序显示倒计时功能示例【测试可用】
2018/12/03 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
2018/12/20 Javascript
js实现时钟定时器
2020/03/26 Javascript
[02:02:38]VG vs Mineski Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
Python操作CouchDB数据库简单示例
2015/03/10 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
如何基于Django实现上下文章跳转
2020/09/16 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
Ibatis的核心配置文件都有什么
2014/09/08 面试题
MVC的各个部分都有那些技术来实现?如何实现?
2016/04/21 面试题
测量实习生自我鉴定
2013/09/19 职场文书
三月雷锋月活动总结
2014/07/03 职场文书
运动员入场词
2015/07/18 职场文书
教学反思怎么写
2016/02/24 职场文书
阿里云k8s服务升级时502错误 springboot项目应用
2022/04/09 Servers