Example #1
0
    $connection = @socket_accept($socket);
    if ($connection) {
        if (!in_array($connection, $clients)) {
            socket_set_nonblock($connection);
            $clients[] = $connection;
            echo "client connected: " . "(" . $connection . ") " . count($clients) . PHP_EOL;
        }
    }
    $timer->update();
    foreach ($clients as $k => $client) {
        $socket_read = socket_read($client, 2048);
        if ($socket_read === false) {
            continue;
        }
        $request = new Request();
        $request->withHeaderString($socket_read);
        $clientThreads[$k] = new ClientThread($client, $request);
        $clientThreads[$k]->start();
    }
    foreach ($clientThreads as $k => $clientThread) {
        socket_close($clientThread->getSocket());
        unset($clients[$k]);
        unset($clientThreads[$k]);
    }
    //$iter++;
    /*if($iter >= 10000000) {
          $running = false;
      }*/
}
foreach ($clients as $client) {
    socket_close($client);