{"id":19808399,"url":"https://github.com/limitium/zmq","last_synced_at":"2025-05-01T07:32:27.249Z","repository":{"id":62517205,"uuid":"6703269","full_name":"limitium/zmq","owner":"limitium","description":"ZeroMQ based distributed patterns","archived":false,"fork":false,"pushed_at":"2015-05-05T12:01:19.000Z","size":317,"stargazers_count":29,"open_issues_count":0,"forks_count":3,"subscribers_count":7,"default_branch":"master","last_synced_at":"2025-04-20T23:34:00.141Z","etag":null,"topics":["distributed-computing","parallel","php","queue","workers","zeromq","zmq"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/limitium.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-11-15T10:48:41.000Z","updated_at":"2023-10-15T19:03:20.000Z","dependencies_parsed_at":"2022-11-02T13:31:12.538Z","dependency_job_id":null,"html_url":"https://github.com/limitium/zmq","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limitium%2Fzmq","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limitium%2Fzmq/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limitium%2Fzmq/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/limitium%2Fzmq/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/limitium","download_url":"https://codeload.github.com/limitium/zmq/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251840447,"owners_count":21652359,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["distributed-computing","parallel","php","queue","workers","zeromq","zmq"],"created_at":"2024-11-12T09:13:46.001Z","updated_at":"2025-05-01T07:32:26.992Z","avatar_url":"https://github.com/limitium.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"ZMQ\n================\n\nBrokers for [ZeroMQ](http://zeromq.org/) from [TA:map](https://github.com/limitium/C-CTA-map-frontend/) project used for distributed parsing system.\n\n[![Build Status](https://travis-ci.org/limitium/zmq.svg?branch=master)](https://travis-ci.org/limitium/zmq)\n[![Dependency Badge](https://www.versioneye.com/user/projects/55437151d8fe1a25cc00008b/badge.svg?style=flat)](https://www.versioneye.com/user/projects/55437151d8fe1a25cc00008b)\n[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/limitium/zmq/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/limitium/zmq/?branch=master)\n[![Latest Stable Version](https://poser.pugx.org/limitium/zmq/v/stable)](https://packagist.org/packages/limitium/zmq)\n[![Total Downloads](https://poser.pugx.org/limitium/zmq/downloads)](https://packagist.org/packages/limitium/zmq)\n[![Latest Unstable Version](https://poser.pugx.org/limitium/zmq/v/unstable)](https://packagist.org/packages/limitium/zmq)\n[![License](https://poser.pugx.org/limitium/zmq/license)](https://packagist.org/packages/limitium/zmq)\n\n## Install(debian)\n\n#### 1. Install ZeroMQ\n\n```bash\n    sudo apt-get update -qq\n    sudo apt-get install -y libzmq3-dev\n```\n\n#### 2. Install php-zmq binding\n\n```bash\n    git clone https://github.com/mkoppanen/php-zmq.git\n    sh -c \"cd php-zmq \u0026\u0026 phpize \u0026\u0026 ./configure \u0026\u0026 make --silent \u0026\u0026 sudo make install\"\n    echo \"extension=zmq.so\" \u003e\u003e `php --ini | grep \"Loaded Configuration\" | sed -e \"s|.*:\\s*||\"`\n```\n\n### 3. Require ZMQ via Composer\n\n```bash\n    composer require limitium/zmq\n```\n\n## Tests\n\n```bash\n    phpunit\n```\n\n## Usage\n\n### PSR-3 distributed logger\n\nCan be used in single process, several process on single machine or on several machines. \n\n#### logger\n\n```php\n    $logger = new ZLogger('my_service_1', 'tcp://127.0.0.1:5555');\n    $logger-\u003einfo(\"core is stable\");\n    $logger-\u003eemergency(\"we're all going to die!\");\n```\n\n#### collector\n\n```php\n    (new Concentrator('tcp://127.0.0.1:5555'))\n        -\u003esetReceiver(function ($logMsg) {\n            $serviceName = $logMsg[0];\n            $time = $logMsg[1];\n            $logLevel = $logMsg[2];\n            $logMsg = $logMsg[3];\n        })\n        -\u003elisten();\n```\n\n### Task generator\n\nWith workers management (checks workers statuses, checks workers heartbeats etc)\n\n#### Generator\n\n```php\n    (new Ventilator('tcp://127.0.0.1:5555'))\n        -\u003esetGenerator(function () {\n            sleep(1);\n            return rand();\n        })\n        -\u003esetResponder(function ($msg) {\n            echo $msg;\n        })\n        -\u003elisten();\n```\n\n#### Worker\n\n```php\n    (new Worker('tcp://127.0.0.1:5555'))\n        -\u003esetExecutor(function ($msg) {\n            return $msg + $msg;\n        })\n        -\u003ework();\n```\n\n### Publish/Subscribe\n\n#### Publisher\n\n```php\n    $pub = new Publisher('tcp://127.0.0.1:5555');\n    $pub-\u003esend('azaza');\n```\n\n#### Subscriber\n\n```php\n    (new Subscriber('tcp://127.0.0.1:5555'))\n        -\u003esetListener(function ($msg){\n            echo $msg;\n        })\n        -\u003elisten();\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimitium%2Fzmq","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flimitium%2Fzmq","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flimitium%2Fzmq/lists"}