El día 23 de enero de 2009 20:46, Hector Salinas <[email protected]> escribió: > Alvaro Herrera escribió: >> >> Hector Salinas escribió: >>> >>> Alvaro Herrera escribió: >> >>> ok, estube testieando este script y sigo con el drama del >>> incremento de memory, creo debe ser al bug de las funciones socket* >> >> Otra idea: declara las variables como "static" dentro de la funcion. >> >>>> #!/usr/bin/php -q >>>> <?php >>>> >>>> function do_client_stuff( ... ) >>>> { >> >> static $client, $input, $ip; >> >>>> $client = socket_accept($sock); >>>> socket_getpeername($client, $ip); >>>> $input = socket_read($client, 10); >>>> echo "\n*******************************"; >>>> echo "\nNew client connected: {$ip}"; >>>> socket_write($client, "A"); >>>> socket_close($client); >>>> } >> >> >> BTW a estas alturas, yo ya tengo más que claro que el problema es lo >> penca que es PHP, y posiblemente tu programa funcionaría sin problemas >> en un lenguaje bien implementado.
Bueno, hay mejores cosas para trabajar con sockets que PHP; Concretamente, creo que ese programa sería mucho más fácil con Python o Ruby. Y habría una solución más seria. PHP es: "PHP: Hypertext Preprocessor"; a diferencia de Python, Ruby, Java y otros lenguajes, éste tiene una finalidad precisa: "preprocesar hipertexto". Las demás "challas" que tiene funcionan bien para el dueño y están arriba por si alguien las quiere usar... pero es mucho más serio dejarlas a un lado. Acá estamos experimentando con pcntl() y es horrible. Hacer un demonio en PHP es... sencillamente una horrible idea; te compadezco. > solucion voy a tenerlo que hacerlo en otro lenguaje, me voy a inclinar por > python (espero que no pase lo mismo con los objetos socket) Un daemon en Python o Ruby se ve bastante bueno. Para Ruby, mira en Ruby on Rails el código de /script/server. > ps : solucion temporal (hasta termine el nuevo script testiado y terminado) > botarlo con crond cada 2 hora el script. No puedo dejar sin que funciones el > torniquete Ouch. -- Rodrigo Fuentealba http://www.thecodekeeper.net/

