limitium / zmq
TA:map 项目中用于分布式解析系统的 ZeroMQ 代理。
dev-master
2015-05-05 12:01 UTC
Requires
- php: >=5.4.0
- ext-zmq: *
- psr/log: ~1.0
Requires (Dev)
- phpunit/phpunit: ~4.6
This package is not auto-updated.
Last update: 2024-09-28 17:23:05 UTC
README
来自 ZeroMQ 的代理,由 TA:map 项目提供,用于分布式解析系统。
安装(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();