got/stark

基于消息队列的PHP守护进程

2.1.1 2020-11-27 09:10 UTC

This package is auto-updated.

Last update: 2024-08-27 17:10:37 UTC


README

Latest Stable Version Total Downloads License

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