h4kuna / queue
php中的System V消息队列。
v0.1.6
2023-09-27 11:09 UTC
Requires
- php: >=8.0
- ext-sysvmsg: *
- h4kuna/data-type: ^3.0
- h4kuna/dir: ^0.1.3
- h4kuna/memoize: ^0.1
- mll-lab/str_putcsv: ^1.1
Requires (Dev)
- h4kuna/serialize-polyfill: ^0.2.2
- nette/tester: ^2.3
- phpstan/phpstan: ^1.9
- phpstan/phpstan-strict-rules: ^1.4
- tracy/tracy: ^2.7
Suggests
- ext-inotify: For passive waiting, if you want to use SystemF.
- ext-lib: For compress messages, lobger then 150 chars.
- ext-sysvmsg: For php native msg_* functions aka SystemV.
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
接收的错误代码