本文实例讲述了PHP队列原理及基于队列的写文件案例。分享给大家供大家参考,具体如下: 队列是一种线性表,按照先进先出的原则进行的: 入队:
出队: PHP实现队列:第一个元素作为队头,最后一个元素作为队尾
<?php
/**
* 队列就是这么简单
*
* @link
*/
$array = array('PHP', 'JAVA');
array_push($array, 'PYTHON'); //入队列
array_shift($array); //出队列
栈和队列 栈只允许访问一个数据项:即最后插入的数据项,移除这个数据项后才能访问倒数第二个插入的数据项,依此类推。
队列有点类似栈,只是在队列中第一个插入的数据项会最先被移除(先进先出,FIFO),而在栈中,最后插入的数据项最先移除(LIFO)。队列和栈一样也被用作程序员的工具。它也可以用于模拟真实世界的环境,例如模拟人们在银行里排队等待 什么是双端队列(或双向队列)Deque,全名double-ended queue? 即元素可以在队列的任意一段入队或出队,如果我们把这些方法叫做insertLeft()和insertRight(),以及removeLeft()和removeRight()。如果严格禁止调用insertLeft()和removeLeft()方法(或禁用右段的操作),双端队列功能就和栈一样。禁止调用insertLeft()和removeRight()(或相反的另一对方法),它的功能就和队列一样了。双端队列与栈或队列相比,是一种多用途的数据结构。 双端队列顾名思义,他有两个端,什么端呢,一般的队列也是有两个端,一个输入,一个输出。双端队列也有两个端,但是这两个端是输入输出均可的: 这个队列有的好处很多,首先他每个段都可以出也可以出,如果只是用一个端出另一个端入,那么他的作用就和队列是一样的,如果是只用一个端输入输出,那么他又和栈的作用是一样的。 PHP实现双端队列
<?php
class Deque
{
public $queue = array();
/**(尾部)入队 **/
public function addLast($value)
{
return array_push($this->queue,$value);
}
/**(尾部)出队**/
public function removeLast()
{
return array_pop($this->queue);
}
/**(头部)入队**/
public function addFirst($value)
{
return array_unshift($this->queue,$value);
}
/**(头部)出队**/
public function removeFirst()
{
return array_shift($this->queue);
}
/**清空队列**/
public function makeEmpty()
{
unset($this->queue);
}
/**获取列头**/
public function getFirst()
{
return reset($this->queue);
}
/** 获取列尾 **/
public function getLast()
{
return end($this->queue);
}
/** 获取长度 **/
public function getLength()
{
return count($this->queue);
}
}
在实际使用中,还可以有输出受限的双向队列(即一个端点允许插入和删除,另一个端点只允许插入的双向队列)和输入受限的双向队列(即一个端点允许插入和删除,另一个端点只允许删除的双向队列)。而如果限定双向队列从某个端点插入的元素只能从该端点删除,则该双向队列就蜕变为两个栈底相邻的栈了。 队列的用途: 队列可以很好地异步处理数据传送和存储,当你频繁地向数据库中插入数据、频繁地向搜索引擎提交数据,就可采取队列来异步插入。另外,还可以将较慢的处理逻辑、有并发数量限制的处理逻辑,通过消息队列放在后台处理,例如FLV视频转换、发送手机短信、发送电子邮件等。 【转载】 https://blog.csdn.net/LYinG7/article/details/82497587
|