项目作者: danog

项目描述 :
Async IPC component for AMPHP
高级语言: PHP
项目地址: git://github.com/danog/ipc.git
创建时间: 2020-02-14T19:31:34Z
项目社区:https://github.com/danog/ipc

开源协议:MIT License

下载


IPC

Continuous Integration
License

danog/ipc provides an async IPC server.

Installation

  1. composer require danog/ipc

Example

Server:

  1. <?php declare(strict_types=1);
  2. require 'vendor/autoload.php';
  3. use Amp\Ipc\Sync\ChannelledSocket;
  4. use function Amp\async;
  5. use function Amp\Ipc\listen;
  6. $clientHandler = function (ChannelledSocket $socket) {
  7. echo "Accepted connection".PHP_EOL;
  8. while ($payload = $socket->receive()) {
  9. echo "Received $payload".PHP_EOL;
  10. if ($payload === 'ping') {
  11. $socket->send('pong');
  12. $socket->disconnect();
  13. }
  14. }
  15. echo "Closed connection".PHP_EOL."==========".PHP_EOL;
  16. };
  17. $server = listen(sys_get_temp_dir().'/test');
  18. while ($socket = $server->accept()) {
  19. async($clientHandler, $socket);
  20. }

Client:

  1. <?php declare(strict_types=1);
  2. require 'vendor/autoload.php';
  3. use Amp\Ipc\Sync\ChannelledSocket;
  4. use function Amp\async;
  5. use function Amp\Ipc\connect;
  6. $clientHandler = function (ChannelledSocket $socket) {
  7. echo "Created connection.".PHP_EOL;
  8. while ($payload = $socket->receive()) {
  9. echo "Received $payload".PHP_EOL;
  10. }
  11. echo "Closed connection".PHP_EOL;
  12. };
  13. $channel = connect(sys_get_temp_dir().'/test');
  14. $thread = async($clientHandler, $channel);
  15. $channel->send('ping');
  16. $thread->await();