Alternativa correcta (socket daemon)

Eduardo Silva edsiper en gmail.com
Dom Ene 25 10:38:09 CLST 2009


creo haber publicado el codigo que funciona sin problemas:

<?

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();

?>

mantiene siempre su mismo consumo de memoria una vez que el cliente deja de
ser atendido.

salu2.-

2009/1/25 Rodrigo Fuentealba <the.code.keeper en gmail.com>

> 2009/1/25 Hector Salinas <hsalinas en bsf.cl>:
> >
> > Horst H. von Brand escribió:
> >>El programa ya fue publicado aquí ... ¿ves tú el error?
> >
> > No veo el bendito error
> >
> >>Personalmente no tengo ningún problema en creer que hay un bug en PHP :-)
> >
> > Por que tanta mala a PHP
>
> PHP lamentablemente como implementacion es mala. No hablamos de que la
> sintáxis del lenguaje es mala (lo es, aunque desde hace un tiempo se
> ha tratado de corregir las inconsistencias que ha tenido), sino de que
> tiene un manejo de memoria malo y de que tienes que rezarle a $DEIDAD
> para que una funcionalidad especial (como los sockets o el control de
> procesos) esté disponible de manera usable.
>
> Sin ir más lejos, hace unos días comentaba con alguien que desarrolla
> PHP (no "en el lenguaje", sino que hace el intérprete), y dijo que
> recién para PHP 5.3, se está arreglando el manejo de memoria para que
> no use "alloca()" (luego dijo algo de un stack que se llena rápido)...
> y una serie de detalles más que debido a mi alto nivel de grados
> alcohólicos (hey, es domingo en la mañana!!!) no comentaré.
>
> Yo personalmente, no puedo tenerle mala al lenguaje y lo defiendo
> cuando es posible y veo que las cosas no se están haciendo bien; gané
> mis lucas justas usándolo porque era la herramienta precisa para la
> tarea precisa; pero cuando las razones técnicas para no usarlo son de
> peso, no queda otra que reconocerlas. Y no por eso seré un fanboy.
>
> Saludos,
>
> --
> Rodrigo Fuentealba
> http://www.thecodekeeper.net/
>
>


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


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