Skip to content

Instantly share code, notes, and snippets.

@kelunik
Created March 14, 2018 20:27
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kelunik/1da529fc36a4428db6109d268e9ad66d to your computer and use it in GitHub Desktop.
Save kelunik/1da529fc36a4428db6109d268e9ad66d to your computer and use it in GitHub Desktop.
<?php
use Amp\Iterator;
use Amp\Cluster\Listener;
use Psr\Log\LoggerInterface as PsrLogger;
Amp\Loop::run(function () {
if (Amp\Cluster::isWorker()) {
$socket = yield Amp\Cluster::listen("tcp://0.0.0.0:8080");
$logger = Amp\Cluster::getLogger();
} else {
$socket = Amp\Socket\listen("tcp://0.0.0.0:8080");
$logger = new StdLogger;
}
$logger->info("Listening on " . $server->getAddress());
\Amp\asyncCall(function () use ($server) {
/** @var \Amp\Socket\ClientSocket $client */
while ($client = yield $server->accept()) {
$client->write(\sprintf("Hello from PID %s!\n", \getmypid()));
$client->close();
}
});
// Registers a SIGINT / SIGTERM signal handler
// Maybe also some special IPC command for Windows
Amp\Cluster::onTerminateRequest(function () use ($server) {
$server->close();
});
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment