| ismak | El
tema de la charla: Programacio'n con
sockets en PHP correra a cargo de Jose M. Gomez Vergara |
| ismak | Actualmente pertenece al equipo de I+D de el periodico español El Mundo |
| ismak | y asiduo de los canales #linux |
| ismak | ha programado entre otras |
| ismak | cosas el modulo de facturacion, radiologia y fisiotesapia de |
| ismak | hospitales como quiron en españa o el hospital britanico en |
| ismak | argentina |
| ismak | Es administrador del canal #linux-seguridad del irc-hispano |
| ismak | y un experto programador en PHP, entre otros lenguajes |
| ismak | Las preguntas se realizaran en el propio canal |
| ismak | Cuando quieras Jose |
| Dr_Q | Bueno |
| Dr_Q | Ante todo buenas noches |
| Dr_Q | y gracias por asistir a esta "charlita de amigos" |
| Dr_Q | espero que lo que voy a contar aqui |
| Dr_Q | os sirva de algo |
| Dr_Q | aunque viendo a la gente que hay en el canal.... creo que mucho ya estais de vuelta de estas cosas |
| Dr_Q | bueno, sin mas |
| Dr_Q | y para no comer el terreno |
| Dr_Q | a David R. que viene detras mia |
| Dr_Q | voy a empezar ya |
| Dr_Q | Primero |
| Dr_Q | me gustaria daros el guion de esta charla |
| Dr_Q | para que veais un poco que es lo que voy a cubrir |
| Dr_Q | 0. Alcance de esta charla |
| Dr_Q | 1. Que son los sockets. Breve introduccion. |
| Dr_Q | 2. Preparando php para poder utilizar los sockets |
| Dr_Q | 3. Dos formas de hacer las cosas. |
| Dr_Q | 4. Sockets en php. Funciones utilizadas |
| Dr_Q | 5. Mala Noticia. Todo esto puede cambiar. |
| Dr_Q | 6. Ejemplos de todo esto |
| Dr_Q | 7. Mas informacion |
| Dr_Q | 8. Preguntas |
| Dr_Q | aunque en el punto 8 he puesto las preguntas |
| Dr_Q | en principio podeis preguntar cuando querais, que ya contestare yo las que sepa :-) |
| Dr_Q | bueno, pongamonos serio y pasemos al punto 0. |
| Dr_Q | 0. Alcance de esta charla |
| Dr_Q | Lo que voy a intentar contaros aqui es algo básico sobre sockets. |
| Dr_Q | Y |
| Dr_Q | sentar unas bases para que aquellas personas interesadas en el tema |
| Dr_Q | puedan empezar a dar sus primeros pasos. |
| Dr_Q | Programar, no es algo que se aprenda yendo a conferencias o charlas |
| Dr_Q | sino que es fruto de mucha practica y de ir aprendiendo con los errores |
| Dr_Q | y solucionando todos esos problemas que se nos van cruzando en nuestro |
| Dr_Q | camino. |
| Dr_Q | Por tanto lo que voy a intertar plasmar aqui es, en lo que todo esto |
| Dr_Q | se basa y por donde podemos empezar con los sockets utilizando para ello |
| Dr_Q | php |
| Dr_Q | Para mi sin duda, "el lenguaje" para desarrollo en internet. |
| Dr_Q | Aunque he visto verdaderas maravillas |
| Dr_Q | programadas en php, y que sin embargo no estaban destinadas a ser ejecutadas desde |
| Dr_Q | un clinete http |
| Dr_Q | 1.Que son los sockets?. Breve introduccion. |
| Dr_Q | Todos hemos oido hablar de los sockets pero tal vez te estarás preguntando |
| Dr_Q | que es esto de los sockets exactamente. |
| Dr_Q | Pues bien... aunque en principio |
| Dr_Q | suena como a algo muy raro, en realidad es algo muy simple de entender |
| Dr_Q | Intentaré explicar de una forma breve de que va todo esto de que va |
| Dr_Q | todo este rollo, intentare definir que son estas cosas |
| Dr_Q | tan raras, para que sirven y como se pueden utilizar |
| Dr_Q | Una vez que definamos algunos conceptos básicos, pasare a describir |
| Dr_Q | su uso, usando el lenguaje php que a mi entender es el lenguaje |
| Dr_Q | mas indicado para los desarrollos en internet con diferencia. |
| Dr_Q | Definicion "a groso modo": Un socket no es más que una forma de comunicarse con otros programas |
| Dr_Q | usando descriptores de fichero estándar de Unix. |
| Dr_Q | normalmente se utiliza para comunicarse con programas que estan en otro ordenadores |
| Dr_Q | aunque no tiene que ser asi forzosamente |
| Dr_Q | de hecho, el servidor de X que tenemos en nuestro ordenador |
| Dr_Q | utiliza sockets para funcionar dentro de nuestro propio ordenador |
| Dr_Q | he dicho en la deficinion |
| Dr_Q | que la comunicacion la hacemos usando descriptores de ficheros |
| Dr_Q | y si, es asi... en realidad en linux todo son ficheros |
| Dr_Q | Y la comunicacion entre varios ordenadores |
| Dr_Q | tambien lo es. A este tipo de ficheros podemos llamarle sockets |
| Dr_Q | Esto claramente es una ventaja |
| Dr_Q | porque si ya has hecho alguna vez algun programa utilizando php |
| Dr_Q | y has hecho cositas con ficheros |
| Dr_Q | ya tienes la mitad del camino recorrido |
| Dr_Q | Ya que su gestion es muy muy parecida, al menos cuando vemos los sockets desde el punto de vista del cliente |
| Dr_Q | Por lo tanto, si has usado ficheros en php, ya sabes programar con sockets.... |
| Dr_Q | ¿queee... contentilloooss eins? |
| Dr_Q | bueno sigamos, que veremos algunas diferencias... |
| Dr_Q | Pero claro ahora estareis pensando.... ¿y de donde me saco yo |
| Dr_Q | un descriptor de ficheros para comunicarme con otro ordenador, listillo? |
| Dr_Q | Paciencia paciencia, que si lo cuento aqui todo voy a tener que quitar la |
| Dr_Q | palabra breve del titulo de este punto en lo que estamos que si habeis |
| Dr_Q | leido era "Breve introduccion". |
| Dr_Q | Existen muchos tipos de sockets |
| Dr_Q | no todo son iguales.... |
| Dr_Q | entre ellos contamos con los |
| Dr_Q | DARPA: Que son los que comunmente utilizamos en internet |
| Dr_Q | Ruta de nodos locales |
| Dr_Q | que son los tipicos sockets de unix |
| Dr_Q | otros para el protocolo x.25 |
| Dr_Q | pero en esta charla nos centraremos en los primeros |
| Dr_Q | ya que nos tenemos que centrar un poco en php |
| Dr_Q | y por tanto en internet |
| Dr_Q | No desespereis que pronto acabo con la introduccion pero creo que es importante |
| Dr_Q | Existen dos grupos principales de sockets |
| Dr_Q | debe usar tcp que nos asegura un orden correcto en la llegada de los paquetes |
| Dr_Q | ya que si tu usuario es fernand0 |
| Dr_Q | y llega erf0dna |
| Dr_Q | probablemente no te valides nunca |
| Dr_Q | es importante el orden |
| Dr_Q | Bueno... centremonos en el tema... vayamos a internet |
| Dr_Q | en php vamos a usar |
| Dr_Q | fundamentalmente dos tipos |
| Dr_Q | los tcp y los udp |
| Dr_Q | que en php son respectivametne SOCK_STREAM |
| Dr_Q | y SOCK_DGRAM |
| Dr_Q | No obstante. Si despues de esta charla os animais a meterle manos a los sockets, yo |
| Dr_Q | os aconsejaria mirar el SOCK_RAW, despues de SOCK_DGRAM y SOCK_STREAM. |
| Dr_Q | mira por donde |
| Dr_Q | ya sabeis de donde viene el nick de RawSock |
| Dr_Q | :-) |
| Dr_Q | 2. Preparando php para poder utilizar los sockets |
| Dr_Q | ya estamos en el punto 2, poco a poco os queda menos de suplicio |
| Dr_Q | En este apartado os tengo que dar dos noticias, una buena y otra |
| Dr_Q | mala. |
| Dr_Q | La mala es que si no habeis utilizado sockets con php todavía, es |
| Dr_Q | muy probable que el php que tengais compilado no os sirva para poder |
| Dr_Q | utilizar las fucniones relaccionadas con los sockets. |
| Dr_Q | !ah vale! entonces cual es la buena noticia? .. |
| Dr_Q | Pues que es muy facil prepararlo para que si lo esté. Para ello |
| Dr_Q | teneis que ejecutar el ./configure, añadiendo a vuestra opciones habituales |
| Dr_Q | la opcion --enable-sockets |
| Dr_Q | es imprescindible hacer esto si quereis hacer algo con los sockets en php |
| Dr_Q | Una vez compilado con estas opciones de configuracion, tu php |
| Dr_Q | entendera ya las instrucciones de los sockets que mas abajo describiré. |
| Dr_Q | 3. Dos formas de hacer las cosas |
| Dr_Q | iupiii! ya estamos en el 3. 4 mas y terminamos :-))) |
| Dr_Q | hasta las ultimas versiones de php |
| Dr_Q | el lenguaje no daba soporte para la programacion de aplicaciones "servidores" |
| Dr_Q | pero si nos daba un soporte para la programacion de programas clientes |
| Dr_Q | ya sabeis "los clientes siempres son lo mas importante" |
| Dr_Q | :-) |
| Dr_Q | por tanto es desde el punto de vista del cliente |
| Dr_Q | desde el que php nos permite dos formas de hacerlo |
| Dr_Q | Veamos una forma sencilla de hacer una comunicacion con sockets a un |
| Dr_Q | servidor, desde php. |
| Dr_Q | Lo primero que tenemos que hacer es abrir la conexion...¿como hacemos |
| Dr_Q | esto? Pues muy facil, una vez que tenemos claro, el host al que |
| Dr_Q | queremos conectarnos y el puerto, ya tenemos la mitad del camino recorrido |
| Dr_Q | lo siguiente, es contarle nuestras intenciones a nuestro ordenador. |
| Dr_Q | Para ello utilizamos fsockopen que sigue la siguiente sintaxis. |
| Dr_Q | int fsockopen (string [udp://]hostname, int port [, int errno |
| Dr_Q | [, string errstr [, float timeout]]]) |
| Dr_Q | un ejemplo lo dejara mas claro: |
| Dr_Q | <?php |
| Dr_Q | if (!$fp) { |
| Dr_Q | echo "$errstr ($errno)<br>\n"; |
| Dr_Q | } else { |
| Dr_Q | fputs ($fp, "GET / HTTP/1.0\r\nHost: www.php.net\r\n\r\n"); |
| Dr_Q | while (!feof($fp)) { |
| Dr_Q | echo fgets ($fp,128); |
| Dr_Q | } |
| Dr_Q | fclose ($fp); |
| Dr_Q | } |
| Dr_Q | ?> |
| Dr_Q | fijaros que no bromeaba al decir que el tratamiento de los sockets en php es muy muy parecido al tratamiento de los ficheros |
| Dr_Q | si la linea en la que abrimos el sockets fuera... fopen(nombre_fichero, "w+") |
| Dr_Q | el resto del programa podria ser casi identico |
| Dr_Q | por tanto desde el punto de vista del cliente, php nos da un interfaz identico, para que no nos quejemos mucho |
| Dr_Q | .-) |
| Dr_Q | De hecho cuando hacemos un cliente en php utilizando sockets |
| Dr_Q | podemos pensar |
| Dr_Q | que el sockets no es mas que un fichero especial que abrimos como en el ejemplo se indica |
| Dr_Q | 4. Sockets en php. Funciones utilizadas. |
| Dr_Q | venga animo!!! |
| Dr_Q | este punto es un poco aburrido |
| Dr_Q | pero quiero explicaros las instrucciones relacionadas con los sockets que php nos proporciona, ahora si!! tanto para clientes como para servidores |
| Dr_Q | para que los ejemplo que ponder en el otro punto, sean mas entendible |
| Dr_Q | int socket (int domain, int type, int protocol) |
| Dr_Q | socket, crea un socket |
| Dr_Q | en domain, normalmente ponemos AF_INET cuanto estamos con aplicaciones de internet |
| Dr_Q | - bind: Asocia el socket a una direccion y puerto. |
| Dr_Q | int bind (resource socket, string address [, int port]) |
| Dr_Q | bind($socket,"www.xphera.com",80) |
| Dr_Q | en socket ponemos la variable devuelta por el socket previamente llamado |
| Dr_Q | adress seria la ip o host, y el puerto al que asociamos la escucha del socket |
| Dr_Q | - listen Se pone a escuchar |
| Dr_Q | int listen (resource socket, int backlog) |
| Dr_Q | listen($socket,5); |
| Dr_Q | |
| Dr_Q | el backlog, es el numero de peticiones que encola |
| Dr_Q | - accept_connect: Acepta conexiones |
| Dr_Q | int accept_connect (resource socket) |
| Dr_Q | accept_connect($socket); |
| Dr_Q | - read Lee de un socket |
| Dr_Q | { |
| Dr_Q | } |
| Dr_Q | si si ya se |
| Dr_Q | ya se lo que me vais a decir |
| Dr_Q | que para eso esta el fget |
| Dr_Q | y si es cierto, pero con read y write tenemos un mayor control sobre que escribimos y leemos de los sockets |
| Dr_Q | - write Escribe en un socket |
| Dr_Q | |
| Dr_Q | |
| Dr_Q | - close |
| Dr_Q | Cierra el socket. |
| Dr_Q | |
| Dr_Q | 5. Una mala noticia: |
| Dr_Q | ha sido corto el 4 |
| Dr_Q | para que no chilleis |
| Dr_Q | la mala noticia que os queria contar es la advertencia que desde la pagina web oficial de php se nos hace |
| Dr_Q | y es la siguiente |
| Dr_Q | This extension is EXPERIMENTAL. The behaviour of this extension, including the names of its functions, and anything else documented about this extension may change in a future release of PHP without notice. Be warned and use this extension at your own risk. |
| Dr_Q | significa esto que no funciona bien |
| Dr_Q | no |
| Dr_Q | significa que el interfaz, tanto lo que devuelve, como la forma en como llamamos a estas funciones |
| Dr_Q | puede cambiar sin previo aviso |
| Dr_Q | ajaaa!! estonces esto es un contradios, yo paso de usar entonces lo sockets en php no? pues un no rotundo |
| Dr_Q | lo que pasa es que tenemos que tomar nuestras precauciones |
| Dr_Q | y en este punto |
| Dr_Q | os voy a contar lo que podeis hacer para que eso no os afecte |
| Dr_Q | la idea, no es otra que programar vosotros, una capa por encima de php para el uso de los sockets |
| Dr_Q | Que quiero decir con todo esto!! |
| Dr_Q | Pues que nos hagamos nosotros una clase propia que acceda a todas las |
| Dr_Q | funciones relacionas con los sockets que queramos utilizar, y que |
| Dr_Q | nuestra aplicación en vez de llamar a las funciones de sockets |
| Dr_Q | directamente, lo haga utilizando nuestra clase. |
| Dr_Q | De esta forma, en el caso |
| Dr_Q | en el que cambien el interfaz de las funciones de php, nosotros, |
| Dr_Q | tan solo tendremos que cambiar esta clase nuestra, en vez de andar |
| Dr_Q | buscando por todos los lugarse de nuestra aplicación para cambiar la |
| Dr_Q | llamada o incluso los valores de retorno pueden ser distintos. |
| Dr_Q | si eso dicho dicho asi suena mu bonito,...pero...ponnos un ejemplo... |
| Dr_Q | pues ahi va... |
| Dr_Q | imaginaros que vamos a usar la funcion bind |
| Dr_Q | para ello podemos recubrilo de la siguiente forma |
| Dr_Q | class my_sockets |
| Dr_Q | { |
| Dr_Q | function my_bind($sock, $address, $port) |
| Dr_Q | { |
| Dr_Q | $resultado = bind ($sock,$address, $port); |
| Dr_Q | return $resultado; |
| Dr_Q | } |
| Dr_Q | } |
| Dr_Q | esta clase propietaria nuestra |
| Dr_Q | tiene una funcion my_bind que es la que debemos usar, que es la que se encarga de llamar a la de php |
| Dr_Q | que consigo con esto |
| Dr_Q | pues bien.. |
| Dr_Q | Imaginemos ahora que en la proxima version de php, resulta |
| Dr_Q | que han cambiado el valor de vuelta y devuelve un array hash tal que |
| Dr_Q | asi |
| Dr_Q | $vh_sock[value] ; el valor que devolvia en la version anterior |
| Dr_Q | $vh_sock[error] ; un codigo de error, si algo falla. |
| Dr_Q | Y que ademas han decidido cambiar el nombre de la funcion para que quede |
| Dr_Q | mas claro su uso, y que la anterior bind deja de existir. Pasandose a |
| Dr_Q | llamar ahora la funcion bind_value_error. Y no solo eso, sino que además, se les ha |
| Dr_Q | ocurrido un nuevo parametro obligatorio que indica si queremos que se |
| Dr_Q | guarde un log de errores o no. |
| Dr_Q | Quedando el nuevo bind de la siguiente manera |
| Dr_Q | $vh_sock function bind_value_error($sock, $address, $port, $error_log) |
| Dr_Q | |
| Dr_Q | esto lo pueden hacer los desarrolladores de php puesto que asi lo advierten en sus paginas oficiales |
| Dr_Q | pues bin |
| Dr_Q | bien |
| Dr_Q | si nosotros hemos tenido la precaucion de hacernos nuestra clase |
| Dr_Q | y ahora cojemos y la modificamos de la siguiente manera |
| Dr_Q | class my_sockets |
| Dr_Q | { |
| Dr_Q | function my_bind($sock, $address, $port) |
| Dr_Q | { |
| Dr_Q | $resultado = bind_value_error ($sock,$address, $port, 0); |
| Dr_Q | return $resultado[value]; |
| Dr_Q | } |
| Dr_Q | } |
| Dr_Q | nuestra aplicacion seguiria funcionando perfectamente |
| Dr_Q | ya que el interfaz de my_bind, tanto entrada como salida, se queda identico |
| Dr_Q | ya nos pueden cambiar el interfaz del bind tanto como quieran que nuestras aplicaciones seguiran funcionando correctamente |
| Dr_Q | :-), y el trabajo invertido en la realizacion de esa clase, solo va a ser comparable a la satisfaccion que te da cuando ves que el problema lo solucionas cambiando dos linesa |
| Dr_Q | en vez de miles que te podria suponer lo otro |
| Dr_Q | Esto es solo un ejemplo básico pero sin duda podriamos tener mucho mas |
| Dr_Q | control sobre lo que queremos hacer. Pero bueno.. eso seria ya hablarlo |
| Dr_Q | en otra charla sobre programación orientada a objetos, porque desde |
| Dr_Q | luego yo... no haria nada con algo que no fueran objetos, pero eso |
| Dr_Q | ya se sale de esta charlita. |
| Dr_Q | 6. Ejemplos de todo esto |
| Dr_Q | vamos a lo practico |
| Dr_Q | ahora voy a poneros unos ejemplos |
| Dr_Q | en los que que vais a poder ver |
| Dr_Q | todo esto que os ando contando |
| Dr_Q | estos ejemplos me los cedio un amigo mio llamado Bolotron al cual le mando desde aqui mis agradecimientos |
| Dr_Q | LISTADO 1. |
| Dr_Q | #!/usr/bin/php -q |
| Dr_Q | <? |
| Dr_Q | if(!$fp) |
| Dr_Q | { |
| Dr_Q | echo "Fallo la conexi\xf3n.<br>\n"; |
| Dr_Q | } |
| Dr_Q | else |
| Dr_Q | { |
| Dr_Q | fputs($fp,"GET / HTTP/1.0\n\n"); |
| Dr_Q | while(!feof($fp)) |
| Dr_Q | { |
| Dr_Q | echo fgets($fp,128); |
| Dr_Q | } |
| Dr_Q | fclose($fp); |
| Dr_Q | } |
| Dr_Q | ?> |
| Dr_Q | este sencillo ejemplo, es un cliente web |
| Dr_Q | que hace una llamada al host que le pasemos como parametro |
| Dr_Q | y recoge, los 128 caracteres primeros que el servidor le envia |
| Dr_Q | y lo muestra por pantalla |
| Dr_Q | <?php |
| Dr_Q | if ($socket < 0) |
| Dr_Q | { |
| Dr_Q | echo "fallo la llamada a socket()\n"; |
| Dr_Q | } |
| Dr_Q | echo "Conectando con '$direc' en el puerto '$puerto'..."; |
| Dr_Q | if ($result < 0) |
| Dr_Q | { |
| Dr_Q | echo "Fallo en connect().\n"; |
| Dr_Q | } else { |
| Dr_Q | echo "OK.\n"; |
| Dr_Q | } |
| Dr_Q | echo "Enviando petici\xf3n web..."; |
| Dr_Q | write($socket, $in, strlen($in)); |
| Dr_Q | echo "OK.\n"; |
| Dr_Q | echo "Leyendo la respuesta\n\n"; |
| Dr_Q | while (read($socket, $out, 1024)) |
| Dr_Q | { |
| Dr_Q | echo "$out\n"; |
| Dr_Q | } |
| Dr_Q | echo "Cerrando el socket..."; |
| Dr_Q | close($socket); |
| Dr_Q | echo "OK.\n\n"; |
| Dr_Q | ?> |
| Dr_Q | una cosa parecida pero con las ultimas instrucciones añadidas por php |
| Dr_Q | Pero la unica manera de ver como todo esto funciona bien es pelearse con todo esto |
| Dr_Q | un listado tan solo va a servir para aclarar un poco las ideas para nada mas |
| Dr_Q | 7 . Donde buscar mas informacion |
| Dr_Q | Mas informacion sobre tcp: RFC-793 |
| Dr_Q | http://www.rfc-editor.org/rfc/rfc793.txt |
| Dr_Q | Mas informacion sobre udp: RFC-768 |
| Dr_Q | http://www.rfc-editor.org/rfc/rfc768.txt |
| Dr_Q | Por supuesto en www.php.net |
| Dr_Q | Bueno, muchas gracias por asistir y aguantar estoicamente este rato que me ha encantado compartir con vosotros |
| Dr_Q | y espero |
| Dr_Q | que esto sea el principio de vuestra andadura por el mundo de los sockets con php |
| Dr_Q | espero que os haya servido de ayuda |
| Dr_Q | Muchas gracias a todos :-) |
| viZard | plas plas plas plas plas plas plas plas plas plas |
| viZard | plas plas plas plas plas plas plas plas plas plas |
| viZard | plas plas plas plas plas plas plas plas plas plas |
| viZard | plas plas plas plas plas plas plas plas plas plas |
| Oroz | gracias a ti Dr_Q |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Ston | clap clap clap clap clap clap clap clap |
| Oroz | quien tenga alguna pregunta este es un buen momento :) (después de los plasclap ;) |
| cox | bravooooo |
| viZard | ;) |
| Dr_Q | gracias... en la proxima que haga. mas y mejor |
| cox | vaya q desastre.. me la perd´i casi completa |
| cox | Q: algun doc al q referirse sobre tu conf? |
| Dr_Q | cox, te la doy a ti en privado cuando quieras :-) |
| Dr_Q | cox voy a corgar un pdf mañana o pasado |
| Rawsock | while(TRUE){clap;} |
| Dr_Q | a ver si saco un rato |
| Dr_Q | :-) |
| cox | Dr_Q: grachie |
| Dr_Q | Rawsock: hombre, un tipo de sockets miralo, ademas habla!!! |
| Oroz | cox: el log estará mañana en la página del umeet |
| Ston | Dr_Q: enviame ese pdf ;) |
| cox | preguntas se aceptan? |
| Rawsock | snif snif |
| Dr_Q | Ston: vale |
| Dr_Q | claro |
| Rawsock | no tengo protocolo XD |
| Dr_Q | :-))) |
| Dr_Q | pero eres un socket puro y duro |
| cox | Dr_Q: como va de eficiencia? |
| Dr_Q | :-)) |
| Chess | splash splash splash splash splash splash |
| Chess | splash splash splash splash splash splash splash splash |
| ismak | plas plas plas plas plas plas plas plas plas plas |
| ismak | plas plas plas plas plas plas plas plas plas plas |
| ismak | plas plas plas plas plas plas plas plas plas plas |
| Dr_Q | cox, sinceramente, los experimentos que he hecho cuando |
| ismak | plas plas plas plas plas plas plas plas plas plas |
| ismak | bravo |
| Dr_Q | el programa lo ejecuto desde un cliente web |
| Dr_Q | no va demasiado rapido |
| Dr_Q | de hecho |
| Dr_Q | creo que el problema no es del php, sino de lo que sobrecarga el ordenador el apache con los procesos que lanza |
| Dr_Q | ya que esos mismos programas, ejecutados desde la linea de comandos con php -f |
| Dr_Q | va bastante rapido |
| Dr_Q | actualmente estoy haciendo un proyecto con la universidad de malana |
| Dr_Q | malaga |
| cox | Dr_Q: y no iria mejor usando inetd? |
| Dr_Q | en el que mi aplicacion recibe peticiones de un cliente, y voy a pedirlas a un programa servidor programado con tcl |
| Dr_Q | pues cox, supongo que la carga seria inferior |
| Dr_Q | pero aunque la logica me dice que si |
| Dr_Q | no te lo puedo asegurar |
| Dr_Q | porque yo siempre tengo el apache como demonio |
| Dr_Q | me lo apunto como deberes :-) |
| cox | Dr_Q: y la concurrencia es algun problema? o solo menaja peticiones de una en una? |
| Dr_Q | no |
| Dr_Q | en la charla comento |
| Dr_Q | que.. |
| Dr_Q | int listen (resource socket, int backlog) |
| Dr_Q | listen($socket,5); |
| Dr_Q | donde el backlog, indica el numero de peticiones que permites encolar |
| Dr_Q | no obstante, se abren nuevos hijos para atender concurrentemente |
| Dr_Q | pero eso lo hace el apache |
| Dr_Q | si lo lanzas desde web |
| cox | ah claro |
| cox | yo tenia la idea de hacerlo desde la linea de comandos |
| Dr_Q | aja, |
| Dr_Q | yo desde la linea de comandos hice experimentos encolando peticiones |
| Dr_Q | no entre muy en profundidad en como se comportaba desde la linea de comandos |
| cox | mmm |
| Dr_Q | lo hice cuando lo lanzaba de web porque me vi en la necesidad debido a que a veces se me colgaba un poco |
| Dr_Q | pero |
| Pablocvk | el url de la página de umeed? |
| Dr_Q | era debido tambien a un fallo en la programacion |
| Dr_Q | porque saturaba al sistema con conexiones que no utilizaba |
| Dr_Q | y llegaba al numero maximo de conexiones |
| cox | crees q la extension es suficientemente estable para ponerla en produccion? |
| Dr_Q | seria cuestion de hacer un estudio sobre el rendimiento mas en profundidad |
| Dr_Q | yo personalmente, si es para hacer un cliente, creo que si, pero para la programacion de un servidor |
| Dr_Q | yo no pondria de momento la mano en el fuego |
| Dr_Q | lo haria con otros lenguajes mas testeados, como nuestro amigo C |
| cox | ya |
| cox | bueno.. gracias :) |
| Dr_Q | php lleva con esta extension |
| Dr_Q | 4.0.2 |
| cox | si yo la he probado muy rusticamente para una cosilla q tenia en mente |
| Dr_Q | si yo fuera el que decidiera |
| Dr_Q | si meter una aplicacion hecha con php para montar un servidor fiable que anduviera en internet |
| Dr_Q | teniendo en cuenta la advertencia que hacen ademas en www.php.net |
| Dr_Q | mi decision seria NO |
| Dr_Q | esperaria un par de versiones mas al menos |
| Dr_Q | aunque para experimentar que es lo que a mi me gusta, entonces si. |
| cox | ya.. de todas maneras si usas inetd el problema se acaba ya q es ´el el que se encarga del tema de los sockets y PHP solo de interpretar el protocolo/ordenes |
| cox | aunq no se inetd como va de optimizado para cierta carga |
| Dr_Q | quizas con xined |
| Dr_Q | que parece venir mas optimizado |
| !compendium.ar.uninet.edu! HACK Caroline MODE #la +tn [1008015045] |
| cox | menuda sintaxis endemoniada el xinetd, con lo facil q era inetd :-P |
| Dr_Q | cox, si me guardas un secreto |
| Dr_Q | yo sigo usando inetd a pesar de lo que dicen de xinetd :-) |
| cox | (asi en privado no? ;) |
| Dr_Q | si si |
| cox | hehe |
| Dr_Q | igual que uso ipchais en vez de iptables, aunque a esto me tendre que cambiar pronto :-) |
| cox | ipchains se sale.. claro q si |
| Dr_Q | ademas |
| Dr_Q | es lo que yo siempre digo |
| Dr_Q | si en autovia no puedes pasar de 120, para que quieres un formula 1? |
| Dr_Q | el formula 1 es para cuando lo necesites |
| Dr_Q | pero para llevarlo en segunda, no te merece la pena |
| Dr_Q | ademas te consume mas (en nuestro caso, recursos del sistema) |
| Dr_Q | mas preguntas |
| Dr_Q | ! |
| cox | (yo no molesto mas :) |
| Caroline | Hola |
| Pablocvk | si, de donde saco el log de este chat desde el principio |
| Pablocvk | ? |
| Dr_Q | pues |
| Caroline | Hola a todos |
| cox | hola Carol |
| Caroline | Cómo ets |
| Caroline | Como estás??? |
| Dr_Q | un segundo que he visto unas imagenes en la television que me he quedado un poco pillado |
| Dr_Q | la url es umeet.uninet.edu |
| Pablocvk | gracias |
| cox | bueno Q, muchas gracias por la conf.. da gusto |
| Dr_Q | cox, un placer |
| Dr_Q | formar parte de todo esto |
| Pablocvk | hay previstas conferencias similares sobre temas afines a php? |
| Oroz | Pablocvk: creo que no |
| Oroz | Pablocvk: mira el programa por si te interesa http://umeet.uninet.edu/umeet2001/spanish/prog.html |
| cox | Pablocvk: creo q no.. pero podrian haber mas desde luego |
| cox | para una vez q se juntan desarrolladores de PHP |
| zerog | hi all |
| ismak | siempre se puede ampliar el programa del umeet con nuevas charlas |
| Chess | no estaria mal |
| Pablocvk | podemos aprobechar para proponer algun tema |
| Chess | pues tocado ya PEAR y Sockets, ... |
| Dr_Q | para PEAR yo creo que cox es el mas indicado |
| ismak | Bueno, pues vamos a dar la gracias a nuestro amigo chema por la estupenda charla realizada |
| Dr_Q | chema? |
| Dr_Q | quien es chema? |
| ismak | y mañana o pasado tendremos el log de la charla en la web |
| cox | imak: me quede flipado el otro dia con los logos de EL PAIS |
| ismak | por Jose |
| cox | ismak: php, apache, linux.. una caña |
| ismak | cox: los de septiembre? |
| Caroline | hola |
| cox | elpais.es |
| ismak | cox: y los nuestros? no los vistes? |
| Caroline | hola |
| Dr_Q | cox: y no vistes el de vi powered :-)? |
| ismak | cox: nos superaron en unas 600000 paginas |
| cox | jojoj.. ese se salia |
| Dr_Q | el de vi era muy fuerte :-))) |
| ismak | aah, ok me fui por otro lado ;-) |
| cox | Dr_Q: me parece buena idea.. no os hace q sea en efnet y en ingles? (sugerencia) |
| ismak | entendi logs en vez de logos |
| ismak | ;-) |
| Dr_Q | cox |
| ismak | nosotros vamoa poner uno que pongo : Powered by Echo.... X) |
| Dr_Q | a mi en principio me da igual |
| Dr_Q | aunque me gustaria tirar un poco para un servidor español |
| Dr_Q | en fin me da lo mismo |
| cox | ismak: X-DD |
| cox | Dr_Q: es q como siempre estoy enchufado por alli, cosas de ser un poco perro ya sabes :) |
| cox | Dr_Q: php_guru? X-DD |
| Dr_Q | hehehehehe |
| Dr_Q | lo habia pensado |
| Dr_Q | pero no me gusta mucho :-) |
| cox | por cierto.. un colega me dio una dire el otro dia: cox@phpguru.org.. se sale eh? |
| cox | chincha chincha |
| Dr_Q | hehehe |
| Dr_Q | lo flipas |
| Dr_Q | que me de a mi otra |
| MrMistery | eh? |
| MrMistery | la charla de buffer overflow es en ingles, no? |
| cox | le dije q las vendiera, seguro q iba a poder sacarles partido |
| Dr_Q | mirando el titulo y viendo que el tio es de usa yo diria que si |
| MrMistery | pero es que en USA hay muchos latinos xD |
| MrMistery | y uno nunca sabe |
| cox | nop.. es ingles |
| !compendium.ar.uninet.edu! HACK ismak MODE #php_ideas +tn [1008016541] |
| cox | igual alguna vez has usado la html.mail.smpt.class |
| cox | es el autor de ella |
| Pablocvk | ... si montais más chats enviadlo a lista@phpes.com, y gracias por todo |
| viZard | hecman ! |
| peter111 | hi ziZard |
| hecman | hoaas vizard |
| peter111 | hi hecman! |
| Rawsock | MrMistery: muchos ? |
| ToniSB | buenas |
| Rawsock | millones |
| Rawsock | la matoria en NY |
| Rawsock | s/matoria/mayoria/ |
| kingdsand | alguno de ustedes me puede ayudar con unas funciones de PHP |
| ismak | kingdsand: pregunta |
| cox | adelante kind |
| cox | oops :) |
| kingdsand | voy a pegar el codigo para ke me entiendan mejor |
| fernando | re |
| hecman | re |
| cox | fe0 |
| fernando | guaxpo |
| kingdsand | { |
| kingdsand | } |
| kingdsand | echo ("</select"); |
| kingdsand | en este select escojo un codigo dentro del select y se lo quiero pasar a una funcion en java |
| kingdsand | para que me retorne la descripcion pero no pasa nada |
| kingdsand | esto es el codigo de java |
| Dr_Q | pero eso depende de lo que pongas en el action del form |
| kingdsand | como que depende |
| Dr_Q | ah pera |
| !bio.hgy.es! Remote CONNECT irc.us.uninet.edu 4400 from MJesus_ |
| Dr_Q | tu dices que salta cuando on select no? |
| !bio.hgy.es! Remote CONNECT irc.us.uninet.edu 4400 from MJesus_ |
| Dr_Q | pero esa funcion que tu pones ahi que es una funcion en php? |
| Dr_Q | porque si es en php eso no te funciona |
| Dr_Q | eso tiene que ser una fucnion en javascript |
| Dr_Q | el php se interpreta en el servidor |
| Dr_Q | y fun_descr() tiene que ser en todo caso una fucnion en php |
| Dr_Q | en javascript perdon |
| kingdsand | si |
| c0rEd | buenas |
| c0rEd | cuanto falta para que comience la conferencia |
| viZard | minutos |
| c0rEd | viZard oye recibiste el email |
| c0rEd | viZard el primo quiere entrar lo viste |
| viZard | el de ayer? |
| kingdsand | ese es el que genera el combo del select y con onselect lo paso a una funcion en javascript |
| viZard | ahh, con que era espia |
| Ston | c0rEd: mira tu reverse lindo ;) |
| Caroline | hola |
| Ston | ah sigo en trabajo...! |
| c0rEd | Ston mi reverse de que hablas |
| c0rEd | viZard si el era un espia |
| Dr_Q | y entonces |
| Dr_Q | que probrema tienes |
| Dr_Q | donde esta ahi el java? |
| c0rEd | viZard har har har el es Gump el entra a linuxlatino |
| hecman | jojo |
| hecman | hola ston |
| c0rEd | viZard dime le digo si o no |
| Dr_Q | kingdsand: ya se lo que te pasa |
| viZard | anuncialo en la lista |
| Dr_Q | ya se |
| c0rEd | viZard ya lo mande |
| kingdsand | que pasa dime |
| Dr_Q | kingdsand: tas por ahi? |
| viZard | revisaron sus cuentas de correo? |
| kingdsand | si |
| Dr_Q | mira |
| kingdsand | 4[Dr_Q4] 1si dime |
| kingdsand | [Dr_Q] si dime |
| Dr_Q | te ha dado por mirar en el codigo fuente que te genera |
| Dr_Q | ¿? |
| Dr_Q | veras que detras del value |
| Dr_Q | lo que tienes para todo los casos es |
| viZard | lluvia de nuevo. no tardo en caerem |
| Dr_Q | $txt_v_codi |
| Dr_Q | en vez del valor de esa variable |
| Dr_Q | y eso te pasa porque lo que esta entre comillas simpre no se evalua |
| Dr_Q | tienes que poner |
| c0rEd | viZard tu lo tienes que revisar |
| Dr_Q | asi seguramente te funcionara |
| viZard | quien es ramon martinez? |
| kingdsand | 4[Dr_Q4] 1pruebo y dentro de un momento te aviso dime lo mismo tengo que hacer con la parte donde va el select |
| kingdsand | [Dr_Q] pruebo y dentro de un momento te aviso dime lo mismo tengo que hacer con la parte donde va el select |
| kingdsand | 4[Dr_Q4] 1para que se pueda ejecutar el Onselect |
| kingdsand | [Dr_Q] para que se pueda ejecutar el Onselect |
| c0rEd | viZard quien tu crees |
| c0rEd | viZard solamente leelo tu sabes la paranoia |
| Dr_Q | asi se te evalua $txt_v_codi por el valor |
| viZard | je |