h4kuna/queue

php中的System V消息队列。

v0.1.6 2023-09-27 11:09 UTC

This package is auto-updated.

Last update: 2024-08-30 01:11:55 UTC


README

此使用原生php队列 msg_* 函数

通过composer安装

composer require h4kuna/queue

如何使用

基础是 QueueFactory

use h4kuna\Queue;

/** @var Queue\QueueFactory $queue */
$queueFactory = new Queue\QueueFactory();

/** @var Queue\Queue $queue */
$queue = $queueFactory->create('my-queue');

$queue->producer()->send('Hello');

$queue->consumer()->receive()->message === 'Hello'

消息可以有不同的类型。

$queue->producer()->send('Hello', 2);
$queue->consumer()->tryReceive() === NULL // non blocking read
$queue->consumer()->receive(2)->message === 'Hello'

或读取所有类型

$queue->producer()->send('Hello', 2);
$queue->consumer()->receive(Queue\Config::TYPE_ALL)->message === 'Hello'

限制

这不是服务器,它只能在本计算机上作为单个实例运行。

捕获接收错误

队列通过 Backup 实现备份。

use h4kuna\Queue;

/** @var Queue\QueueFactory $queue */
$queueFactory = new Queue\QueueFactory();

/** @var Queue\Queue $queue */
$queue = $queueFactory->create('my-queue');

$queue->restore(); // restore from backup, after restart
do {
    try {
        $message = $queue->consumer()->receive();
        // ... 
    } catch (Queue\ReceiveException $e) {
        // log error
        // stop process if code is 22
    }
} while(true);

队列列表

ipcs -q

接收的错误代码