danog/ipc
IPC component for Amp.
Maintainers
1.0.1
2025-04-18 14:42 UTC
Requires
- php: >=8.1
- amphp/byte-stream: ^2.1.2
- amphp/parallel: ^2.3.1
- amphp/parser: ^1.1.1
Requires (Dev)
- amphp/amp: v3.x-dev
- amphp/php-cs-fixer-config: v2.x-dev
- amphp/phpunit-util: v3.x-dev
- phpunit/phpunit: ^9.6.22
- psalm/phar: ^5.26.1
Suggests
None
Provides
None
Conflicts
None
Replaces
None
MIT 505e672b76af6ec623f7ef78efb2416f62ef8e29
- Daniil Gentili <daniil.woop@daniil.it>
- Aaron Piotrowski <aaron.woop@trowski.com>
- Stephen Coakley <me.woop@stephencoakley.com>
README
👁 Continuous Integration
👁 License
danog/ipc provides an async IPC server.
Installation
composer require danog/ipc
Example
Server:
<?php declare(strict_types=1); require 'vendor/autoload.php'; use Amp\Ipc\Sync\ChannelledSocket; use function Amp\async; use function Amp\Ipc\listen; $clientHandler = function (ChannelledSocket $socket) { echo "Accepted connection".PHP_EOL; while ($payload = $socket->receive()) { echo "Received $payload".PHP_EOL; if ($payload === 'ping') { $socket->send('pong'); $socket->disconnect(); } } echo "Closed connection".PHP_EOL."==========".PHP_EOL; }; $server = listen(sys_get_temp_dir().'/test'); while ($socket = $server->accept()) { async($clientHandler, $socket); }
Client:
<?php declare(strict_types=1); require 'vendor/autoload.php'; use Amp\Ipc\Sync\ChannelledSocket; use function Amp\async; use function Amp\Ipc\connect; $clientHandler = function (ChannelledSocket $socket) { echo "Created connection.".PHP_EOL; while ($payload = $socket->receive()) { echo "Received $payload".PHP_EOL; } echo "Closed connection".PHP_EOL; }; $channel = connect(sys_get_temp_dir().'/test'); $thread = async($clientHandler, $channel); $channel->send('ping'); $thread->await();
