Alternativa correcta (socket daemon)

Eduardo Silva edsiper en gmail.com
Vie Ene 23 16:57:44 CLST 2009


basado en tu codigo, lo he modificado y este codigo funciona correctamente
sin incrementar el memory usage:

<?

function test() {
        set_time_limit (0);

        $address = '127.0.0.1';
        $port = 5000;
        $sock = socket_create(AF_INET, SOCK_STREAM, 0);
        socket_set_option($sock, SOL_SOCKET, SO_REUSEADDR, SOL_TCP);
        socket_bind($sock, $address, $port) or die('error bind en la ip');
        socket_listen($sock);

        while(1){
                $client = socket_accept($sock);
                socket_getpeername($client, $ip);
                $input = socket_read($client, 10);
                echo "\n*******************************";
                echo "\nNew client connected: {$ip}";
                echo "\n|-> memory usage: ".memory_get_usage();
                unset($input);
                socket_close($client);
        }
        socket_close($sock);
}

test();

?>

fijate en unset el input, cerrar y cerrar el socket por cada bucle, de lo
contrario te quedaras sin descriptores de archivos para recibir nuevos
clientes, lo cual puede concluir en un exit.

saludos

-- 
Eduardo Silva
http://edsiper.linuxchile.cl


Más información sobre la lista de distribución Linux