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 |