got / stark
基于消息队列的PHP守护进程
2.1.1
2020-11-27 09:10 UTC
Requires
- php: >=7.2
- ext-pcntl: *
- ext-posix: *
- ext-redis: *
- ext-sockets: *
- monolog/monolog: ^2.1
README
Stark 是一个用于将 PHP 代码作为多进程守护进程运行的库。
要求
- PHP 5.4 或更高版本
- 与 POSIX 兼容的操作系统(Linux, OSX, BSD)
- PHP 的 POSIX 和 PCNTL 扩展
- Redis 扩展
特性
- 简单的回调
- 消息队列处理
- 守护进程监控
- 自动重启
示例
仅消费者
<?php require_once __DIR__ . '/../vendor/autoload.php'; use Stark\DaemonFactory; use Stark\Daemon\Consumer\AbstractConsumer; use Stark\Daemon\Worker; class MyConsumer extends AbstractConsumer { public function consume(Worker $worker, $data) { // ... return true; } } $daemon = DaemonFactory::consumerOnly(new MyConsumer()); $daemon->setWorkerCount(3); $daemon->setMaxRunCount(50000); $daemon->setPort(9101); $daemon->setName("consumer-self"); $daemon->setWorkingDirectory("/tmp"); $daemon->start();
消费者 Redis 队列
<?php require_once __DIR__ . '/../vendor/autoload.php'; use Stark\Daemon\Consumer\AbstractConsumer; use Stark\DaemonFactory; use Stark\Daemon\Worker; class MyConsumer extends AbstractConsumer { public function consume(Worker $worker, $data) { if ($data == false) { return false; } //... $data from redis queue-0 return true; } } $daemon = DaemonFactory::consumeRedis(new MyConsumer(), "127.0.0.1", "9004", "queue-0"); $daemon->setWorkerCount(3); $daemon->setMaxRunCount(500000); $daemon->setPort(9102); $daemon->setName("consumer-redis"); $daemon->start();
管理员
# Status redis-cli -h 127.0.0.1 -p 9102 info # Shutdown redis-cli -h 127.0.0.1 -p 9102 shutdown