slowmove / simple-php-queue
一个简单、主要基于文件的队列,具有多个适配器
v0.4
2024-02-28 10:49 UTC
Requires
- php: >=8.1
- pda/pheanstalk: ^5.0
- predis/predis: ^2.2
Requires (Dev)
- pestphp/pest: ^2.34
- pestphp/pest-plugin-type-coverage: ^2.8
README
基于简单文件系统的PHP队列,具有多个适配器。
当前实现
textfile
sqlite
redis
(使用连接字符串代替文件路径,默认为localhost)beanstalkd
https://beanstalkd.github.io/
要求
PHP 8.1+
使用示例
示例在此处可运行 here
生产者
<?php use Slowmove\SimplePhpQueue\Queue; use Slowmove\SimplePhpQueue\Storage\StorageType; $queue = new Queue(StorageType::SQLITE, "./queue.db"); for ($i = 0; $i < 150; $i++) { $queue->enqueue("test $i"); }
消费者
<?php use Slowmove\SimplePhpQueue\Queue; use Slowmove\SimplePhpQueue\Storage\StorageType; $queue = new Queue(StorageType::SQLITE, "./queue.db", true); $queue->listen(function ($item) { echo $item . PHP_EOL; });
类型
可用的枚举 here;
enum StorageType: string { case FILE = 'file'; case SQLITE = 'sqlite'; case REDIS = 'redis'; case BEANSTALKD = 'beanstalkd'; }
方法
enqueue(string $data): bool
dequeue(): ?string
listen(callable $fn, int $delayWhenEmpty = 5): void
length(): int
content(): array