$clients[] = $client; $client_index = array_search($client, $clients); $addr = ""; socket_getpeername($client, $addr); echo "connected to remote address {$addr}\n"; on_connect($client_index); $n = count($clients) - 1; $key = array_search($server, $read); unset($read[$key]); } foreach ($read as $read_client) { usleep(10000); $client_index = array_search($read_client, $clients); $data = @socket_read($read_client, MAX_DATA_LEN, PHP_NORMAL_READ); if ($data === False) { on_disconnect($client_index); socket_close($read_client); unset($clients[$client_index]); echo "client disconnected\n"; continue; } $data = trim($data); if ($data == "") { continue; } #echo "message received: $data\n"; if ($data == "quit" or $data == "shutdown") { echo "{$data} received\n"; if ($data == "quit") { socket_shutdown($read_client, 2); socket_close($read_client);
$except = NULL; socket_select($changed, $write, $except, NULL); //have some issues here for connect foreach ($changed as $socket) { if ($socket == $master) { $client = socket_accept($master); if ($client < 0) { console("socket_accept() failed"); continue; } else { connect($client); } } else { $bytes = socket_recv($socket, $buffer, 2048, 0); if ($bytes == 0) { on_disconnect(getuserbysocket($socket)); disconnect($socket); } else { $user = getuserbysocket($socket); if (!$user->handshake) { dohandshake($user, $buffer); } else { ensure_db(); process_multiple($user, $buffer); } } } } } //----------------------------------------------- // MySQL database connector