https://github.com/limitium/zmq
ZeroMQ based distributed patterns
https://github.com/limitium/zmq
distributed-computing parallel php queue workers zeromq zmq
Last synced: 11 months ago
JSON representation
ZeroMQ based distributed patterns
- Host: GitHub
- URL: https://github.com/limitium/zmq
- Owner: limitium
- Created: 2012-11-15T10:48:41.000Z (over 13 years ago)
- Default Branch: master
- Last Pushed: 2015-05-05T12:01:19.000Z (almost 11 years ago)
- Last Synced: 2025-04-20T23:34:00.141Z (11 months ago)
- Topics: distributed-computing, parallel, php, queue, workers, zeromq, zmq
- Language: PHP
- Size: 310 KB
- Stars: 29
- Watchers: 7
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
ZMQ
================
Brokers for [ZeroMQ](http://zeromq.org/) from [TA:map](https://github.com/limitium/C-CTA-map-frontend/) project used for distributed parsing system.
[](https://travis-ci.org/limitium/zmq)
[](https://www.versioneye.com/user/projects/55437151d8fe1a25cc00008b)
[](https://scrutinizer-ci.com/g/limitium/zmq/?branch=master)
[](https://packagist.org/packages/limitium/zmq)
[](https://packagist.org/packages/limitium/zmq)
[](https://packagist.org/packages/limitium/zmq)
[](https://packagist.org/packages/limitium/zmq)
## Install(debian)
#### 1. Install ZeroMQ
```bash
sudo apt-get update -qq
sudo apt-get install -y libzmq3-dev
```
#### 2. Install php-zmq binding
```bash
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. Require ZMQ via Composer
```bash
composer require limitium/zmq
```
## Tests
```bash
phpunit
```
## Usage
### PSR-3 distributed logger
Can be used in single process, several process on single machine or on several machines.
#### logger
```php
$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
```php
(new Concentrator('tcp://127.0.0.1:5555'))
->setReceiver(function ($logMsg) {
$serviceName = $logMsg[0];
$time = $logMsg[1];
$logLevel = $logMsg[2];
$logMsg = $logMsg[3];
})
->listen();
```
### Task generator
With workers management (checks workers statuses, checks workers heartbeats etc)
#### Generator
```php
(new Ventilator('tcp://127.0.0.1:5555'))
->setGenerator(function () {
sleep(1);
return rand();
})
->setResponder(function ($msg) {
echo $msg;
})
->listen();
```
#### Worker
```php
(new Worker('tcp://127.0.0.1:5555'))
->setExecutor(function ($msg) {
return $msg + $msg;
})
->work();
```
### Publish/Subscribe
#### Publisher
```php
$pub = new Publisher('tcp://127.0.0.1:5555');
$pub->send('azaza');
```
#### Subscriber
```php
(new Subscriber('tcp://127.0.0.1:5555'))
->setListener(function ($msg){
echo $msg;
})
->listen();
```