TA:map 项目中用于分布式解析系统的 ZeroMQ 代理。

dev-master 2015-05-05 12:01 UTC

This package is not auto-updated.

Last update: 2024-09-28 17:23:05 UTC


README

来自 ZeroMQ 的代理,由 TA:map 项目提供,用于分布式解析系统。

Build Status Dependency Badge Scrutinizer Code Quality Latest Stable Version Total Downloads Latest Unstable Version License

安装(debian)

1. 安装 ZeroMQ

    sudo apt-get update -qq
    sudo apt-get install -y libzmq3-dev

2. 安装 php-zmq 绑定

    git clone https://github.com/mkoppanen/php-zmq.git
    sh -c "cd php-zmq && phpize && ./configure && make --silent && sudo make install"
    echo "extension=zmq.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`

3. 通过 Composer 需求 ZMQ

    composer require limitium/zmq

测试

    phpunit

用法

PSR-3 分布式日志记录器

可在单个进程、单机上的多个进程或多台机器上使用。

logger

    $logger = new ZLogger('my_service_1', 'tcp://127.0.0.1:5555');
    $logger->info("core is stable");
    $logger->emergency("we're all going to die!");

collector

    (new Concentrator('tcp://127.0.0.1:5555'))
        ->setReceiver(function ($logMsg) {
            $serviceName = $logMsg[0];
            $time = $logMsg[1];
            $logLevel = $logMsg[2];
            $logMsg = $logMsg[3];
        })
        ->listen();

任务生成器

带工作管理(检查工作状态、检查工作心跳等)

Generator

    (new Ventilator('tcp://127.0.0.1:5555'))
        ->setGenerator(function () {
            sleep(1);
            return rand();
        })
        ->setResponder(function ($msg) {
            echo $msg;
        })
        ->listen();

Worker

    (new Worker('tcp://127.0.0.1:5555'))
        ->setExecutor(function ($msg) {
            return $msg + $msg;
        })
        ->work();

发布/订阅

发布者

    $pub = new Publisher('tcp://127.0.0.1:5555');
    $pub->send('azaza');

订阅者

    (new Subscriber('tcp://127.0.0.1:5555'))
        ->setListener(function ($msg){
            echo $msg;
        })
        ->listen();