function server_loop($address, $port) { global $__server_listening; // AF_UNIX AF_INET if (($sock = socket_create(AF_INET, SOCK_STREAM, 0)) < 0) { events("failed to create socket: " . socket_strerror($sock), __FUNCTION__, __LINE__); exit; } if (($ret = socket_bind($sock, $address, $port)) < 0) { events("failed to bind socket: " . socket_strerror($ret), __FUNCTION__, __LINE__); exit; } if (($ret = socket_listen($sock, 0)) < 0) { events("failed to listen to socket: " . socket_strerror($ret), __FUNCTION__, __LINE__); exit; } socket_set_nonblock($sock); events(count($GLOBALS["LOCAL_DOMAINS"]) . " internals domains...", __FUNCTION__, __LINE__); events("waiting for clients to connect", __FUNCTION__, __LINE__); while ($__server_listening) { $connection = @socket_accept($sock); if ($connection === false) { if ($GLOBALS["DebugArticaFilter"] == 1) { events("sleep", __FUNCTION__, __LINE__); } usleep(2000000); } elseif ($connection > 0) { handle_client($sock, $connection); } else { events("error: " . socket_strerror($connection), __FUNCTION__, __LINE__); die; } } }
/** * Creates a server socket and listens for incoming client connections * @param string $address The address to listen on * @param int $port The port to listen on */ function server_loop($address, $port) { global $__server_listening; if (($sock = socket_create(AF_INET, SOCK_STREAM, 0)) < 0) { echo "failed to create socket: " . socket_strerror($sock) . "\n"; exit; } if (($ret = socket_bind($sock, $address, $port)) < 0) { echo "failed to bind socket: " . socket_strerror($ret) . "\n"; exit; } if (($ret = socket_listen($sock, 0)) < 0) { echo "failed to listen to socket: " . socket_strerror($ret) . "\n"; exit; } socket_set_nonblock($sock); echo "waiting for clients to connect\n"; while ($__server_listening) { $connection = @socket_accept($sock); if ($connection === false) { usleep(100); } elseif ($connection > 0) { handle_client($sock, $connection); } else { echo "error: " . socket_strerror($connection); die; } } }
function server_loop($address, $port) { global $__server_listening; global $__PROCESS_NUM; if (($sock = socket_create(AF_INET, SOCK_STREAM, 0)) < 0) { events("failed to create socket: " . socket_strerror($sock), __FUNCTION__, __LINE__); exit; } if (($ret = socket_bind($sock, $address, $port)) < 0) { events("failed to bind socket: " . socket_strerror($ret), __FUNCTION__, __LINE__); exit; } if (($ret = socket_listen($sock, 0)) < 0) { events("failed to listen to socket: " . socket_strerror($ret), __FUNCTION__, __LINE__); exit; } @unlink("/etc/artica-postfix/pids/squid-tail-sock"); // socket_set_nonblock($sock); socket_getsockname($socket, $GIP, $GPORT); $errorcode = socket_last_error(); $errormsg = socket_strerror($errorcode); events("waiting for clients to connect {$GIP}:{$GPORT} ({$MyPort}) [ERR.{$errorcode}] `{$errormsg}` {$GLOBALS["COUNT_ERROR_98"]}", __FUNCTION__, __LINE__); if ($errorcode == 98) { events("die...", __FUNCTION__, __LINE__); return; } @file_put_contents("/etc/artica-postfix/pids/squid-tail-sock", "OK"); $GLOBALS["SOCK"] = $sock; while ($__server_listening) { $connection = @socket_accept($sock); if ($connection === false) { usleep(200000); } elseif ($connection > 0) { events("handle_client()...", __FUNCTION__, __LINE__); handle_client($sock, $connection); } else { events("error: " . socket_strerror($connection), __FUNCTION__, __LINE__); die; } } }
function server_loop($address, $port) { global $fh; global $__server_listening; if (($sock = socket_create(AF_INET, SOCK_STREAM, 0)) < 0) { exit; } if (($ret = socket_bind($sock, $address, $port)) < 0) { exit; } if (($ret = socket_listen($sock, 0)) < 0) { exit; } socket_set_nonblock($sock); while ($__server_listening) { $connection = @socket_accept($sock); if ($connection === false) { usleep(100); } elseif ($connection > 0) { handle_client($sock, $connection); } else { die; } } }
if (($ret = socket_listen($master, 5)) < 0) { echo "socket_listen() failed: reason: " . socket_strerror($ret) . "\n"; } $read_sockets = array($master); $driver = null; while (true) { $changed_sockets = $read_sockets; $num_changed_sockets = socket_select($changed_sockets, $write = NULL, $except = NULL, NULL); foreach ($changed_sockets as $socket) { if ($socket == $master) { if (($client = socket_accept($master)) < 0) { echo "socket_accept() failed: reason: " . socket_strerror($msgsock) . "\n"; continue; } else { array_push($read_sockets, $client); } } else { $bytes = socket_recv($socket, $buffer, 2048, 0); if ($bytes == 0) { $index = array_search($socket, $read_sockets); unset($read_sockets[$index]); socket_close($socket); } else { $allclients = $read_sockets; array_shift($allclients); // remove master handle_client($allclients, $socket, $buffer, $bytes); } } } }