php 实现队列
队列的基本概念
队列是一种先进先出(FIFO)的数据结构,元素从队尾入队,从队首出队。PHP中可以通过数组或专门的数据结构库实现队列功能。
使用数组实现队列
PHP数组原生支持队列操作,通过array_push和array_shift函数实现:

$queue = [];
// 入队操作
array_push($queue, 'item1');
array_push($queue, 'item2');
// 出队操作
$item = array_shift($queue);
echo $item; // 输出 'item1'
使用SplQueue类
PHP标准库(SPL)提供了SplQueue类,专为队列设计:
$queue = new SplQueue();
// 入队操作
$queue->enqueue('item1');
$queue->enqueue('item2');
// 出队操作
$item = $queue->dequeue();
echo $item; // 输出 'item1'
性能优化建议
数组实现的队列在大量数据时性能较差,因为array_shift需要重新索引数组。SplQueue基于链表实现,适合高频队列操作场景。

实现阻塞队列
结合信号量或Redis可实现阻塞队列。以下是Redis示例:
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 生产者
$redis->rPush('my_queue', 'data');
// 消费者
while (true) {
$data = $redis->blPop('my_queue', 10);
if ($data) {
process($data[1]);
}
}
消息队列扩展
对于分布式系统,建议使用专业消息队列:
- RabbitMQ:通过
php-amqplib库实现 - Beanstalkd:使用
pheanstalk客户端 - Kafka:通过
rdkafka扩展支持






