宝哥软件园

PHP队列原理及基于队列的文件编写案例

编辑:宝哥软件园 来源:互联网 时间:2021-09-03

本文阐述了PHP队列的原理和基于队列编写文件的案例。分享给大家参考,如下:

队列是一个线性表,它是按照先进先出的原则进行的:

加入团队:

退出团队:

PHP实现队列:第一个元素作为队列头,最后一个元素作为队列尾

?Php/** *队列就是这么简单* * @ link */$ array=array ('PHP ',' Java ');array_push($array,' PYTHON ');//queue array _ shift($ array);//出队列什么是dequee(或双向队列)dequee,全称双端队列?

也就是说,如果我们调用这些方法insertLeft()和insertRight(),以及removeLeft()和removeRight(),元素可以在队列的任何部分入队或出队。如果insertLeft()和removeLeft()方法被严格禁止调用(或者右段的操作被禁用),那么deque函数就像堆栈一样。禁止调用insertLeft()和override()(或相反的一对方法),其功能就像队列一样。与堆栈或队列相比,deque是一种多用途的数据结构。

用PHP实现deque

?phpclass Deque { public $ queue=array();/* * (tail) queue * */public函数add last($ value){ return array _ push($ this-queue,$ value);}/* * (tail) * */public函数remove last(){ return array _ pop($ this-queue);}/* * (head) enqueue * */public函数add first($ value){ return array _ unshift($ this-queue,$ value);}/* *(head)* */public function remove first(){ return array _ shift($ this-queue);}/* *空队列* */public函数make empty(){ unset($ this-queue);}/* * get列标题* */public函数get first(){ return reset($ this-queue);}/* * get列end * */public函数get last(){ return end($ this-queue);}/* * get length * */public函数get length(){ return count($ this-queue);}}队列的目的:

队列可以异步处理数据传输和存储。当您频繁地将数据插入数据库并将数据提交给搜索引擎时,可以使用队列异步插入数据。此外,慢处理逻辑和并发有限的处理逻辑可以通过消息队列在后台处理,如FLV视频转换、发送手机短信、发送电子邮件等。

项目案例

这里有一个项目,因为服务器权限问题,无法安装队列程序,并发300,服务提供者数据库连接数上限300。为了解决这个问题,编写了一个简单的队列程序,代码如下

读取队列代码:

?phpset _ time _ limit(0);$ file _ name3=' 3.txt//这个地方是关于把从队列文件读取的内容写入文件。而不是mysql数据库操作$file3=fopen($file_name3,' a ');while(true){ $ c=FALSE;$ file _ name=' 1.txt//队列文件$file=fopen($file_name,' r ');if(!Feof($f)) {//获取第一个数据$ a=fgets($ file);if(!空($ a)){ $ c=TRUE;fwrite($file3,$ a);//可以改为数据库操作} } fclose($ file);If($c) {//删除文件exec的第一个数据(' sed-I ' 1d '/var/www/CSV _ SQL/1 . txt ');}睡眠(1);if(time()=strtotime(' 20160416150000 '){ exit;} } fclose($ file 3);读队列程序实际上是一个无限循环程序。如果不设置关闭点,您将总是循环读取文件

写队列程序比较简单,就是写文件

?phpset _ time _ limit(0);$ file _ name2=' 2.txt//$file2=fopen($file_name2,' a ')用于比较//test中队列程序是否正常;for($ I=1;$ i11$ I){ $ file _ name=' 1 . txt ';//队列文件$file=fopen($file_name,' a ');//fopen的mode属性必须是或$ str=$ i.'-'。兰特(100001,99999);fwrite($file,$str。 n ');fwrite($file2,$str。 n ');睡眠(1);fc lose($ file);} fc lose($ file 2);更多对PHP相关内容感兴趣的读者可以查看本网站专题:《PHP数据结构与算法教程》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》、《php常见数据库操作技巧汇总》、0103010

希望本文对PHP编程有所帮助。

更多资讯
游戏推荐
更多+