} } $selector = new MioSelector(); $streams = new MioStreamFactory(); echo "Creating server..."; $selector->register($streams->createServerStream('127.0.0.1:8888'), MioSelectionKey::OP_ACCEPT); echo "DONE\n"; $i = 0; while (true) { /** * Add socket streams five at a time otherwise the server * buffer gets filled up and fsockopen blocks */ for ($j = 0; $j < 5 && $i < 100; $i++, $j++) { echo "Creating client " . ($i + 1) . "..."; $selector->register($streams->createSocketStream('127.0.0.1', 8888), MioSelectionKey::OP_WRITE, new MessageGen()); echo "DONE\n"; } while (!($count = $selector->select())) { if ($count === false || $count === 0 && count($selector->selection_keys) == 1) { $selector->close(); break 2; } } foreach ($selector->selected_keys as $key) { if ($key->isAcceptable()) { while ($stream = $key->stream->accept()) { $selector->register($stream, MioSelectionKey::OP_READ, new EchoGen()); } } elseif ($key->isReadable()) { $data = $key->stream->read(4096);