From rmunoz en pjud.cl Mon Feb 6 10:34:09 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Mon Feb 6 11:27:43 2006 Subject: select In-Reply-To: <43D8D89E.9070102@gmail.com> References: <43D8D89E.9070102@gmail.com> Message-ID: <1139232849.3739.3.camel@wwwtest2.pjud.cl> El jue, 26-01-2006 a las 11:11, Rodrigo Fuentealba escribió: > jonathan Patricio Sepulveda Bustamante wrote: > > hola amigos, bueno tengo un problema, o a lo mejor me estoy complicando > > demasiado, la cosa es q' quiero posicionar un select con php, no se si > > se entiende, tengo un campo select option y quiero posicionarlo, hay ta > > mas claro, jejeje. bueno, espero sus respuestas. [...] > foreach ($valores as $valor) > { > echo(''); > $i++; > } > > ?> > > > A ver, que desventajas tiene esto... Recuerda que PHP es un lenguaje del > lado del servidor, por lo que si quieres cambiar este valor "on the fly" > vas a tener que hacer postback, volver a cargar la pagina, leer el > $_POST['ejemplo'] y ver si el valor seleccionado ha cambiado, lo cual es > una locura considerando que cada vez que cambias el valor en PHP vas a > tener que recargar la pagina. a menos que se haga con AJAX... ;) -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From anabela_romina en waycomnet.com.ar Mon Feb 6 20:45:58 2006 From: anabela_romina en waycomnet.com.ar (Anabela) Date: Mon Feb 6 21:06:53 2006 Subject: problemas al conectar Message-ID: <43E7DFB6.000006.01264@ANABELA> Saltado el tipo de contenido multipart/alternative------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : image/gif Tamaño : 3027 bytes Descripción: no disponible Url : http://listas.inf.utfsm.cl/pipermail/php/attachments/20060206/4c2a0b75/attachment.gif ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : image/gif Tamaño : 12796 bytes Descripción: no disponible Url : http://listas.inf.utfsm.cl/pipermail/php/attachments/20060206/4c2a0b75/attachment-0001.gif From jmvidal en sertotal.cl Mon Feb 6 21:34:06 2006 From: jmvidal en sertotal.cl (Jose Miguel Vidal Lavin) Date: Mon Feb 6 22:04:51 2006 Subject: problemas al conectar In-Reply-To: <43E7DFB6.000006.01264@ANABELA> References: <43E7DFB6.000006.01264@ANABELA> Message-ID: <43E7EAFE.8020504@sertotal.cl> Anabela Podrias editar el código html de la página que da como resultado ese código php?, ahi podria estar mostrando algún dato de interes. saludos Anabela wrote: > Hola a todos! > Estoy empezando a programar en php y mysql, ya tengo la web alojada en > lycos que me ofrece php+mysql. Ya tengo creadas la base y las tablas, > esta activado php4 y quise probar a ver si conectaba (despues de leer > varios tutoriales). Tengo este codigo y no me da ningun mensaje, la > pagina queda en blanco: > > 'segun lycos hay que poner localhost, el usr y sin pwd > > > > Prueba conexion > > > function Conectarse() > { > if (!($link=mysql_connect("localhost","usuario",""))) { > echo "Error conectando a la base de datos."; > exit(); > } > if (!mysql_select_db("base_datos",$link)) > { > echo "Error seleccionando la base de datos."; > exit(); > } > return $link; > } > > $link=Conectarse(); > echo "Conexión con la base de datos conseguida.
"; > > mysql_close($link); //cierra la conexion > ?> > > > Se que esto es muy basico para ustedes pero recien estoy empezando. > Gracias a todos!! > > Anabela > anabela_romina@waycomnet.com.ar > > > > > From darkprox en gmail.com Tue Feb 7 01:59:04 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Tue Feb 7 05:40:48 2006 Subject: problemas al conectar In-Reply-To: <43E7EAFE.8020504@sertotal.cl> References: <43E7DFB6.000006.01264@ANABELA> <43E7EAFE.8020504@sertotal.cl> Message-ID: <43E82918.9090300@gmail.com> Anabela: Consejo, prueba con esto para que vayas viendo como funciona el PHP y el MySQL. Prueba Conexion -- Rodrigo Fuentealba Cartes Tecnico Analista Programador Registered User #387639 - http://counter.li.org From juanpablo.magno en gmail.com Tue Feb 7 10:34:13 2006 From: juanpablo.magno en gmail.com (JuanPa) Date: Tue Feb 7 13:20:09 2006 Subject: problemas al conectar In-Reply-To: <43E82918.9090300@gmail.com> References: <43E7DFB6.000006.01264@ANABELA> <43E7EAFE.8020504@sertotal.cl> <43E82918.9090300@gmail.com> Message-ID: Hola a todos en la lista, seria interesante saber la direccion URL de la pagina q esta causando problemas, para poder dar una ayuda mas exacta. El día 6/02/06, Rodrigo Fuentealba escribió: > > Anabela: > > Consejo, prueba con esto para que vayas viendo como funciona el PHP y el > MySQL. > > > // aqui defines los parametros de conexion > // para no tener que jugar con TODO el codigo. > > $servidor = 'localhost'; > $username = 'usuario'; > $password = 'password'; > $database = 'basedatos'; > ?> > > > > Prueba Conexion > > > > > > // la conexion es facil, no es necesario meterla en una funcion. > // de hecho asi ganas en saber donde falla el cuento... Después puedes > // usar herramientas como adodb (adodb.sourceforge.net) o MDB2 > // (pear.php.net) ;) > > $conexion = mysql_connect($servidor, $username, $password); > > // si no hay conexion > > if(!$conexion) > die("Error de conexion"); > else > > // y si no hay base de datos... > if(!mysql_select_db($database, $conexion)) > die("Error de seleccion de la base de datos"); > else > { > > // ah si hay, conecta!!!!!! > > echo("Conectado! Cerrando conexion"); > mysql_close($conexion); > } > > ?> > > > > > -- > Rodrigo Fuentealba Cartes > Tecnico Analista Programador > Registered User #387639 - http://counter.li.org > > -- Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060207/66935591/attachment.html From anabela_romina en waycomnet.com.ar Tue Feb 7 16:32:04 2006 From: anabela_romina en waycomnet.com.ar (Anabela) Date: Tue Feb 7 16:22:56 2006 Subject: problemas al conectar References: Message-ID: <43E8F5B4.00000A.03676@ANABELA> Saltado el tipo de contenido multipart/alternative------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : image/gif Tamaño : 3027 bytes Descripción: no disponible Url : http://listas.inf.utfsm.cl/pipermail/php/attachments/20060207/07c999c3/attachment-0002.gif ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : image/gif Tamaño : 12796 bytes Descripción: no disponible Url : http://listas.inf.utfsm.cl/pipermail/php/attachments/20060207/07c999c3/attachment-0003.gif From juanpablo.magno en gmail.com Wed Feb 8 19:19:43 2006 From: juanpablo.magno en gmail.com (JuanPa) Date: Wed Feb 8 19:09:43 2006 Subject: Pool de conexiones en PHP Message-ID: Hola a todos listeros... Estoy implementando un sistema de registro de alumnos en PHP5 / Postgres con tres capas, no estoy utilizando ningun framework o uno de esos otros chiches (quisiera toparme con estos problemillas primero). Mi consulta radica en la forma en que hago mis conexiones de base datos, si bien es cierto hay q dejar todo el peso de las conexiones a la capa de persistencia de datos, esto hace q abra y cierre las conexiones a cada rato. Por ejemplo en el caso de cargar un objeto alumno haria: Código PHP: conectarse(); // hago mi consulta $con->query($sql) $alumno = new Alumno(); $alumno->colegio = Colegio::buscarColegio($data["cod_colegio"]); //este metodo internamente tambien abre y cierra una conexion; $alumno->ciudad = Colegio::buscarCiudad($data["cod_ciudad"]); //esta tambien //... y cuantas tuviera $con->cerrar_conexion(); // cerramos la conexion de al inicio return $alumno; } Esto abriria y cerraria muchas conexiones por lo q reventaria el limite de estas. Otro caso es este: Código PHP: query($sql) $alumno->colegio = Colegio::buscarColegio($con,$data["cod_colegio"]); //usa la conexion ya disponible; $alumno->ciudad = Colegio::buscarCiudad($con,$data["cod_ciudad"]); //este tambien //... y cuantas tuviera return $alumno; } Aqui mando mi conexion abierta desde fuera, pero esto haria que el que abra mi conexion sea mi capa de logica de negocio, pero supuestamente esta no debería ser su funcion, ademas imaginemos q el metodo de la capa de logica sea un poco extensa, la conexion estaria abierta mucho tiempo, y eso tambien acarrearia problemas. La pregunta del millon es esta... ¿Cual de las dos formas es la mas optima a utilizar? ¿Existe una tercera forma? ¿Que hay de los pool de conexiones.. me comentaban que evitaban estos problemas? Esto ultimo no lo he investigado Agredecere cualquier colaboracion. -- Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060208/5edfa46d/attachment.html From juanpablo.magno en gmail.com Wed Feb 8 19:23:02 2006 From: juanpablo.magno en gmail.com (JuanPa) Date: Wed Feb 8 19:13:01 2006 Subject: Pool de conexiones en PHP Message-ID: [Reenviado, el codigo estaba un poco pequeño] Hola a todos foristas... Estoy implementando un sistema de registro de alumnos en PHP5 / Postgres con tres capas, no estoy utilizando ningun framework o uno de esos otros chiches (quisiera toparme con estos problemillas primero). Mi consulta radica en la forma en que hago mis conexiones de base datos, si bien es cierto hay q dejar todo el peso de las conexiones a la capa de persistencia de datos, esto hace q abra y cierre las conexiones a cada rato. Por ejemplo en el caso de cargar un objeto alumno haria: Código PHP: function buscarAlumno($codigo){ $con = new Conexion(); $con->conectarse(); // hago mi consulta $con->query($sql) $alumno = new Alumno(); $alumno->colegio = Colegio::buscarColegio($data["cod_colegio"]); //este metodo internamente tambien abre y cierra una conexion; $alumno->ciudad = Colegio::buscarCiudad($data["cod_ciudad"]); //esta tambien //... y cuantas tuviera $con->cerrar_conexion(); // cerramos la conexion de al inicio return $alumno; } Esto abriria y cerraria muchas conexiones por lo q reventaria el limite de estas. Otro caso es este: Código PHP: function buscarAlumno($con,$codigo){ $alumno = new Alumno(); // hago mi consulta $con->query($sql) $alumno->colegio = Colegio::buscarColegio($con,$data["cod_colegio"]); //usa la conexion ya disponible; $alumno->ciudad = Colegio::buscarCiudad($con,$data["cod_ciudad"]); //este tambien //... y cuantas tuviera return $alumno; } Aqui mando mi conexion abierta desde fuera, pero esto haria que el que abra mi conexion sea mi capa de logica de negocio, pero supuestamente esta no debería ser su funcion, ademas imaginemos q el metodo de la capa de logica sea un poco extensa, la conexion estaria abierta mucho tiempo, y eso tambien acarrearia problemas. La pregunta del millon es esta... ¿Cual de las dos formas es la mas optima a utilizar? ¿Existe una tercera forma? ¿Que hay de los pool de conexiones.. me comentaban que evitaban estos problemas? Esto ultimo no lo he investigado Agredecere cualquier colaboracion. -- Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060208/8b8c999e/attachment.html From julioarayacerda en gmail.com Thu Feb 9 17:11:38 2006 From: julioarayacerda en gmail.com (Julio Araya) Date: Thu Feb 9 18:06:35 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: Message-ID: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> On 2/8/06, JuanPa wrote: > > [Reenviado, el codigo estaba un poco pequeño] > Hola a todos foristas... > Estoy implementando un sistema de registro de alumnos en PHP5 / Postgres > con tres capas, no estoy utilizando ningun framework o uno de esos otros > chiches (quisiera toparme con estos problemillas primero). Mi consulta > radica en la forma en que hago mis conexiones de base datos, si bien es > cierto hay q dejar todo el peso de las conexiones a la capa de persistencia > de datos, esto hace q abra y cierre las conexiones a cada rato. > Por ejemplo en el caso de cargar un objeto alumno haria: > Código PHP: > function buscarAlumno( $codigo){ > $con = new Conexion (); > $con->conectarse(); > > // hago mi consulta > $con->query( $sql) > > $alumno = new Alumno (); > $alumno->colegio = Colegio::buscarColegio($data[ "cod_colegio"]); > //este metodo internamente tambien abre y cierra una conexion; > $alumno->ciudad = Colegio:: buscarCiudad($data["cod_ciudad" ]); > //esta tambien > //... y cuantas tuviera > > $con ->cerrar_conexion(); > // cerramos la conexion de al inicio > return $alumno; > } > KATE O KWRITE :P Esto abriria y cerraria muchas conexiones por lo q reventaria el limite de > estas. depende si estas tu motor de base de datos soporta conexiones persistentes y no cierras las conexiones no deberia reventar Otro caso es este: > Código PHP: > > function buscarAlumno($con ,$codigo){ > $alumno = new Alumno(); > // hago mi consulta > $con ->query($sql) > $alumno ->colegio = Colegio:: buscarColegio($con,$data ["cod_colegio" > ]); > //usa la conexion ya disponible; > $alumno->ciudad = Colegio:: buscarCiudad($con,$data ["cod_ciudad"]); > //este tambien > //... y cuantas tuviera > > return $alumno; > } > > Aqui mando mi conexion abierta desde fuera, pero esto haria que el que > abra mi conexion sea mi capa de logica de negocio, pero supuestamente esta > no debería ser su funcion, ademas imaginemos q el metodo de la capa de > logica sea un poco extensa, la conexion estaria abierta mucho tiempo, y eso > tambien acarrearia problemas. > La pregunta del millon es esta... > ¿Cual de las dos formas es la mas optima a utilizar? > mmm no me convence ninguna ¿Existe una tercera forma? > si y una cuarta y una quinta....etc ¿Que hay de los pool de conexiones.. me comentaban que evitaban estos > problemas? > No me suena, pero.... Utiliza clases de acceso a datos (onda class ColegioDAO) y que estos DAOs sea los encargados de abrir(no de cerrar) conexiones con la base de datos. La idea es que estos DAOs se comuniquen con algun DAOConnector.php y en este archivo se abran las conexiones a la base de datos(o las bases de datos), asi como tambien almacenar cualquier configuracion adicional de conexion este en DAOConnector. De esta manera la capa de negocios solamente se entendera con los DAOs y ellos verán como obtienen los datos y los empaquetaran en los Beans(crea unos Beans(onda class ColegioBean) que tenga sus getters y setters(no se si esta bien escrito) y que estos sean los encargados de llevar la informacion empaquetada) Ahora bien... PHP automaticamente liberará todos los resources que no se esten ocupando al finalizar el script por lo que no es necesario cerrar las conexiones a las bases de datos(con conexiones persistentes) PHP se encargará cuando sea necesario(algo asi como un recolector de basura de JAVA) Esto ultimo no lo he investigado > Agredecere cualquier colaboracion. > -- > Juan Pablo > saludos! -- Julio Araya C. Linux User #386141 Estudiante de Ingeniería Civil Informatica Valparaiso - Chile Universidad Tecnica Federico Santa Maria http://www.alumnos.utfsm.cl/~julio.araya http://www.arriendocasas.cl ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060209/ee40b698/attachment.html From darkprox en gmail.com Thu Feb 9 19:02:27 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Thu Feb 9 18:52:17 2006 Subject: Pool de conexiones en PHP In-Reply-To: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> References: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> Message-ID: <43EBBBF3.9010907@gmail.com> Hola: > > Estoy implementando un sistema de registro de alumnos en PHP5 / > Postgres con tres capas, no estoy utilizando ningun framework o > uno de esos otros chiches (quisiera toparme con estos problemillas > primero). Mi consulta radica en la forma en que hago mis > conexiones de base datos, si bien es cierto hay q dejar todo el > peso de las conexiones a la capa de persistencia de datos, esto > hace q abra y cierre las conexiones a cada rato. > Por ejemplo en el caso de cargar un objeto alumno haria: > Código PHP: > | | > | function buscarAlumno( $codigo){ > $con = new Conexion (); > $con->conectarse(); > > // hago mi consulta > $con->query( $sql) > > $alumno = new Alumno (); > $alumno->colegio = Colegio::buscarColegio($data[ "cod_colegio"]); > //este metodo internamente tambien abre y cierra una conexion; > $alumno->ciudad = Colegio:: buscarCiudad($data["cod_ciudad" ]); > //esta tambien > //... y cuantas tuviera > > $con ->cerrar_conexion(); > // cerramos la conexion de al inicio > return $alumno; > } | > > KATE O KWRITE :P > ¿A qué viene eso? > > Esto abriria y cerraria muchas conexiones por lo q reventaria el > limite de estas. > > > depende si estas tu motor de base de datos soporta conexiones > persistentes y no cierras las conexiones no deberia reventar PostgreSQL sí soporta conexiones persistentes. Simplemente tienes que modificar algunas cosas. Creo que tu pregunta es más sencilla de resolver que lo que se ve en el correo. voy a hacer un pequeño pseudocódigo (ando con jaquecas hoy) que te guíe. abierta) { abrir_conexion(); } codigoparabuscar->colegio; } function buscaralumno() { abrir_conexion(); alumno = new alumno(); buscar_colegio(); buscar_ciudad(); return alumno(); cerrar_conexion(); } ?> Aunque PHP al finalizar el script cierra las conexiones y libera la basura, yo personalmente recomiendo cerrar las conexiones puesto que el garbage collector igual ocupa algo más de memoria, pues debe "adivinar" qué cosas están abiertas. Aqui solamente abres una conexion aparte si no hay ninguna conexión abierta, lo cual quiere decir que te ahorras una conexión a la base de datos por cada vez que con el esquema anterior tienes problemas. ;) > Otro caso es este: > Código PHP: > | | > | > function buscarAlumno( $con ,$codigo){ > $alumno = new Alumno(); > // hago mi consulta > $con ->query($sql) > $alumno ->colegio = Colegio:: buscarColegio($con,$data > ["cod_colegio"]); > //usa la conexion ya disponible; > $alumno->ciudad = Colegio:: buscarCiudad($con,$data > ["cod_ciudad"]); > //este tambien > //... y cuantas tuviera > > return $alumno; > } > | > > Aqui mando mi conexion abierta desde fuera, pero esto haria que el > que abra mi conexion sea mi capa de logica de negocio, pero > supuestamente esta no debería ser su funcion, ademas imaginemos q > el metodo de la capa de logica sea un poco extensa, la conexion > estaria abierta mucho tiempo, y eso tambien acarrearia problemas. > La pregunta del millon es esta... > ¿Cual de las dos formas es la mas optima a utilizar? > > > mmm no me convence ninguna A mí tampoco me convence ninguna. Veo que estás tratando las tres capas como algo totalmente separado, cuando en verdad es algo común que en algunas partes se junten. El concepto de N-Tier, según como yo lo entiendo, te da la capacidad de modelar/programar un problema en varias capas, pero en ninguna parte dice que están completamente inconexas. Ahora, si en vez de abrir_conexion(); usas mysql_connect(); en la capa de negocios... claro que está malo, pues vas a tener que tú mismo validar que la conexión se abra bien, que el nombre de usuario, que la password, etc. Una buena capa de manejo de datos está dada (como siempre digo) por adodb y MDB2 que es parte de PEAR. > > ¿Existe una tercera forma? > > > si y una cuarta y una quinta....etc > Siempre existe más de una forma de resolver estos problemas. De hecho, con AJAX :P > > ¿Que hay de los pool de conexiones.. me comentaban que evitaban > estos problemas? > > > No me suena, pero.... > El pool de conexiones es "parecido" a las conexiones persistentes. Aún cuando no hagas conexiones persistentes, un pool de conexión te permite utilizar una sola conexión y abrirla/cerrarla cuando haces operaciones. Es algo intermedio entre conexiones open/close y persistentes. La conexión pool te queda abierta pero no procesando datos, sino que queda en modo de lock para que cuando abras otra conexion se utilice la misma y no una segunda o una tercera. > Utiliza clases de acceso a datos (onda class ColegioDAO) y que estos > DAOs sea los encargados de abrir(no de cerrar) conexiones con la base > de datos. La idea es que estos DAOs se comuniquen con algun > DAOConnector.php y en este archivo se abran las conexiones a la base > de datos(o las bases de datos), asi como tambien almacenar cualquier > configuracion adicional de conexion este en DAOConnector. De esta > manera la capa de negocios solamente se entendera con los DAOs y ellos > verán como obtienen los datos y los empaquetaran en los Beans(crea > unos Beans(onda class ColegioBean) que tenga sus getters y setters(no > se si esta bien escrito) y que estos sean los encargados de llevar la > informacion empaquetada) No crees tu capa de abstracción de datos tú mismo, no reinventes la rueda: ya hay unos bastante buenos, como adodb y MDB2, que ya había mencionado. (adodb.sourceforge.net). A pesar de que hay a quien no le gusta cómo programa el creador de adodb, la clase hace su pega y la hace bien. Aparte el sistema te queda bastante portable a Oracle, Access, SQL Server, MySQL, SQLite y otros... (quien va a usar PHP con SQL Server? bueno no falta el ... personaje) > Ahora bien... PHP automaticamente liberará todos los resources que no > se esten ocupando al finalizar el script por lo que no es necesario > cerrar las conexiones a las bases de datos(con conexiones > persistentes) PHP se encargará cuando sea necesario(algo asi como un > recolector de basura de JAVA) Nunca he confiado en GC... prefiero pegarme el trabajo yo solito, si es una linea (mysql_close($conexion);) ;) > > Esto ultimo no lo he investigado > Agredecere cualquier colaboracion. > -- > Juan Pablo > > > saludos! > > -- > Julio Araya C. Linux User #386141 > Estudiante de Ingeniería Civil Informatica Valparaiso - Chile > Universidad Tecnica Federico Santa Maria > http://www.alumnos.utfsm.cl/~julio.araya > > http://www.arriendocasas.cl ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060209/7fdf70e4/attachment-0001.html From juanpablo.magno en gmail.com Thu Feb 9 22:01:51 2006 From: juanpablo.magno en gmail.com (JuanPa) Date: Thu Feb 9 22:17:08 2006 Subject: Pool de conexiones en PHP In-Reply-To: <43EBBBF3.9010907@gmail.com> References: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> <43EBBBF3.9010907@gmail.com> Message-ID: Gracias por sus respuestas listeros... La verdad si me estoy complicando con mis tres capas... bien cabe decirlo que es la primera vez que lo pongo en practica en PHP de forma practica. Bien dicen por ahi, que 100 horas de teoria no valen un cacho sin una de práctica. Es por eso que me estaba complicando con esto de las conexiones. Quisiera que me aclaren un poco mas el concepto de conexion persistente y su utilidad practica. 1.- Hasta donde sé las conexiones persistentes son aquellas a las que te conectas, solamente si esta se abrió antes, en caso contrario se abriria una nueva. Estando esta disponible para otra solicitud que se requiera. 2.- Entonces ¿entiendo que (en aplicación PHP ) debería crear una sola conexion ?? 3.- ¿Cuales son las ventajas entre utilizar un tipo de conexion persistente o no persistente? Nuevamente les agradeceria... su colaboracion. :D Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060209/33acae1e/attachment.html From darkprox en gmail.com Thu Feb 9 23:56:34 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Fri Feb 10 01:36:52 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> <43EBBBF3.9010907@gmail.com> Message-ID: <43EC00E2.2040700@gmail.com> JuanPa wrote: > Gracias por sus respuestas listeros... > La verdad si me estoy complicando con mis tres capas... bien cabe > decirlo que es la primera vez que lo pongo en practica en PHP de forma > practica. Bien dicen por ahi, que 100 horas de teoria no valen un > cacho sin una de práctica. Es por eso que me estaba complicando con > esto de las conexiones. Quisiera que me aclaren un poco mas el > concepto de conexion persistente y su utilidad practica. A ver, las conexiones persistentes dejan un buffer abierto mientras se ejecutan las consultas, y son más rápidas pero consumen más recursos, pues dejan la conexión abierta mientras no se cierre la aplicación (con exit(); o matándolas). Es un atentado en contra de tu memoria, y por lo general, mucha gente las encuentra más fáciles, pero yo como que no las recomiendo. Es mejor usar conexiones no persistentes, es decir, abriendo la conexión al principio de tu script y cerrando la conexión al final, pues siempre vas a tener páginas que no hagan ninguna consulta a la base de datos... ¿Para qué, entonces, tendrás una conexión abierta? Es únicamente un desperdicio de recursos. Por eso es mejor abrir la conexión al principio de un script y cerrarla al final, y si tienes funciones que recuperan datos como el caso de tu buscar alumno, en vez de abrir una conexión nueva, preguntes si ya hay una conexión abierta para aprovecharla. Las conexiones persistentes son buenas cuando el volumen de los datos que va a retornar una consulta es demasiado grande y tienes miedo de que una conexión no persistente expire. De todas formas, la conexion no persistente expira en 1 minuto (configurable), y segun el php.ini-recommended, la ejecucion de un script expira en 30 segundos, por lo que no deberia aproblemarte esto. Visto esto, respondamos tus preguntas: > 1.- Hasta donde sé las conexiones persistentes son aquellas a las que > te conectas, solamente si esta se abrió antes, en caso contrario se > abriria una nueva. Estando esta disponible para otra solicitud que se > requiera. Cualquiera de las dos conexiones funciona así, la diferencia es que la persistente la abres una vez por usuario (o por conexion?) y la no persistente una vez por archivo y solo en los archivos que tienen conexiones a las bases de datos. > 2.- Entonces ¿entiendo que (en aplicación PHP ) debería crear una > sola conexion ?? No tan correcto. Deberías mantener una sola conexión abierta, lo cual es distinto. > 3.- ¿Cuales son las ventajas entre utilizar un tipo de conexion > persistente o no persistente? Las conexiones no persistentes te ahorran mucha memoria. Dificultan un poquito el código a veces, pero también lo hacen más comprensible, pues sabes de dónde sacas los datos. > Nuevamente les agradeceria... su colaboracion. :D > > Juan Pablo Atte. Rodrigo. From julioarayacerda en gmail.com Fri Feb 10 09:14:04 2006 From: julioarayacerda en gmail.com (Julio Araya) Date: Fri Feb 10 10:09:27 2006 Subject: Pool de conexiones en PHP In-Reply-To: <43EC00E2.2040700@gmail.com> References: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> <43EBBBF3.9010907@gmail.com> <43EC00E2.2040700@gmail.com> Message-ID: <7eccce0d0602100414y1b8de098l9f67b93d25cc5c83@mail.gmail.com> On 2/9/06, Rodrigo Fuentealba wrote: > JuanPa wrote: > > Gracias por sus respuestas listeros... de nada > > La verdad si me estoy complicando con mis tres capas... bien cabe > > decirlo que es la primera vez que lo pongo en practica en PHP de forma > > practica. Bien dicen por ahi, que 100 horas de teoria no valen un > > cacho sin una de práctica. Es por eso que me estaba complicando con Eso dicen y en lo personal te digo que es bastante cierto... > > esto de las conexiones. Quisiera que me aclaren un poco mas el > > concepto de conexion persistente y su utilidad practica. > A ver, las conexiones persistentes dejan un buffer abierto mientras se > ejecutan las consultas, y son más rápidas pero consumen más recursos, > pues dejan la conexión abierta mientras no se cierre la aplicación (con > exit(); o matándolas). Es un atentado en contra de tu memoria, y por lo > general, mucha gente las encuentra más fáciles, pero yo como que no las > recomiendo. > > Es mejor usar conexiones no persistentes, es decir, abriendo la conexión > al principio de tu script y cerrando la conexión al final, pues siempre > vas a tener páginas que no hagan ninguna consulta a la base de datos... > ¿Para qué, entonces, tendrás una conexión abierta? Es únicamente un > desperdicio de recursos. Completamente de acuerdo > > Por eso es mejor abrir la conexión al principio de un script y cerrarla > al final, y si tienes funciones que recuperan datos como el caso de tu > buscar alumno, en vez de abrir una conexión nueva, preguntes si ya hay > una conexión abierta para aprovecharla. Se podria usar por ejemplo una clase de conexion que tenga una variable privada estatica(ej $miConexion = false) y un metodo estatico getConexion() y esta misma clase tener un destructor como este class Conexion{ private static $miConexion = false; public static function getConexion(){ //si la conexion esta establecida se retorna, si no //se establece una conexion y se devuelve el identificador de la conexion // guardando antes en identificador en self::$miConexion return self::$miConexion; } private static function __construct(){} private static function __destruct (){ //si $miConexion esta abierta entonces cierro la conexion } } De esta manera te olvidas(un poco por lo menos) de tener que cerrar las conexiones al finalizar el script... Me parece que con unas pequeñas modificaciones pdrias tener un pool de conexiones e ir cerrandolas tambien > [...] -- Julio Araya C. Linux User #386141 Estudiante de Ingeniería Civil Informatica Valparaiso - Chile Universidad Tecnica Federico Santa Maria http://www.alumnos.utfsm.cl/~julio.araya http://www.arriendocasas.cl From rmunoz en pjud.cl Fri Feb 10 09:31:07 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Fri Feb 10 10:21:17 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: <7eccce0d0602091211 j75fbd143m91d84193deb0d72@mail.gmail.com><43EBBBF3.9010907@gmail.com> Message-ID: <43EC878B.5080301@pjud.cl> JuanPa escribió: > Gracias por sus respuestas listeros... > La verdad si me estoy complicando con mis tres capas... bien cabe decirlo > que es la primera vez que lo pongo en practica en PHP de forma practica. > Bien dicen por ahi, que 100 horas de teoria no valen un cacho sin una de > práctica. Es por eso que me estaba complicando con esto de las conexiones. > Quisiera que me aclaren un poco mas el concepto de conexion persistente y su > utilidad practica. > > 1.- Hasta donde sé las conexiones persistentes son aquellas a las que te > conectas, solamente si esta se abrió antes, en caso contrario se abriria una > nueva. Estando esta disponible para otra solicitud que se requiera. > una conexion persistente permite re-utilizar una conexion ya abierta, ademas de tener que cerrarla explicitamente sino queda "abierta"! la idea es evitar el tiempo (milisegundos?) que se ocupa en "establecer" una conexion. su uso a mi entender esta reservado a sitios con muchas conexiones nuevas, con procesos cortos. originalmente tu preguntaste por un "pool" de conexiones lo cual es diferente ya que ahi se puede compartir conexiones *entre* procesos, y eso en PHP se tiene que hacer con ayuda externa: http://sqlrelay.sourceforge.net/ claro que lo anterior me tinca no es necesario al ocupar Apache 2.x (threads) a menos que tengas muchos servidores web... obs. insisto que todo lo anterior es solo necesario para aplicaciones con *muchos* (miles) usuarios simultaneos. > 2.- Entonces ¿entiendo que (en aplicación PHP ) debería crear una sola > conexion ?? > ver mas arriba. > 3.- ¿Cuales son las ventajas entre utilizar un tipo de conexion persistente > o no persistente? > ver mas arriba. -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From juanpablo.magno en gmail.com Fri Feb 10 10:39:08 2006 From: juanpablo.magno en gmail.com (JuanPa) Date: Fri Feb 10 10:56:05 2006 Subject: Pool de conexiones en PHP In-Reply-To: <43EC00E2.2040700@gmail.com> References: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> <43EBBBF3.9010907@gmail.com> <43EC00E2.2040700@gmail.com> Message-ID: Hola listeros.... Te agradezco nuevamente Rodrigo por dar tu valioso tiempo aclarando mis dudas, A raiz de es comentario es que he optado por utilizar mis clasicas conexiones no persistentes . Es mejor usar conexiones no persistentes, es decir, abriendo la conexión > al principio de tu script y cerrando la conexión al final, pues siempre > vas a tener páginas que no hagan ninguna consulta a la base de datos... > ¿Para qué, entonces, tendrás una conexión abierta? Es únicamente un > desperdicio de recursos. Ademas no voy a esperar que el GC (Garbage Colector) haga su trabajo, una ultima cosa... Por eso es mejor abrir la conexión al principio de un script y cerrarla > al final, y si tienes funciones que recuperan datos como el caso de tu > buscar alumno, en vez de abrir una conexión nueva, preguntes si ya hay > una conexión abierta para aprovecharla. Pero ¿ esto no significa que la conexion deberìa ser persistente? o te refieres a que deberia pasar por parametros a mi objeto conexion que tiene un recurso de conexion interno($link) y luego verificar si esta está abierta. Y finalmente cuando dices... > Cualquiera de las dos conexiones funciona así, la diferencia es que la > persistente la abres una vez por usuario (o por conexion?) ... > Esto significa ¿ Que la conexion seguira abierta en cada script que valla ejecutando el usuario, mientras no se cierre explicitamente en otro script o cuando el usuario cierre el navegador ? Mil disculpas si soy muy pregunton, pero siempre me gusta sacar conclusiones valiosas de las conversaciones.... Gracias de antemano... Nos leemos ----------------- Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060210/494aff0b/attachment.html From rmunoz en pjud.cl Fri Feb 10 11:22:51 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Fri Feb 10 11:15:10 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: <7eccce0d0602091211 j75fbd143m91d84193deb0d72@mail.gmail.com><43EBBBF3.9010907@gmail.com><43EC00E2.2040700@gmail.com> Message-ID: <43ECA1BB.6030304@pjud.cl> JuanPa escribió: [...] > A raiz de es comentario es que he optado por utilizar mis clasicas > conexiones no persistentes. > buena decision, es lo que se ajusta a la mayoria de los casos. [...] > Ademas no voy a esperar que el GC (Garbage Colector) haga su trabajo, yep. pero ojo que el GC igualmente va a revisar cada programa PHP... ;) [...] >> Cualquiera de las dos conexiones funciona así, la diferencia es que la >> persistente la abres una vez por usuario (o por conexion?) ... >> >> > Esto significa ¿ Que la conexion seguira abierta en cada script que valla > ejecutando el usuario, mientras no se cierre explicitamente en otro script o > cuando el usuario cierre el navegador ? > una conexion persistente no se cierra cuando el usuario cierre el navegador. se cierra solo cuando desde PHP se use una funcion que explicitamente asi lo indique. -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From juanpablo.magno en gmail.com Fri Feb 10 10:45:14 2006 From: juanpablo.magno en gmail.com (JuanPa) Date: Fri Feb 10 12:26:21 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> <43EBBBF3.9010907@gmail.com> <43EC00E2.2040700@gmail.com> Message-ID: Hola de nuevo.. jaaa :D Gracias tambien Julio y Ricardo, mientras escribia el mail anterior me llegaron sus respuestas.. Nos leemos tambien -- Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060210/469fd3dc/attachment.html From darkprox en gmail.com Fri Feb 10 15:08:59 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Fri Feb 10 14:58:32 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> <43EBBBF3.9010907@gmail.com> <43EC00E2.2040700@gmail.com> Message-ID: <43ECD6BB.9020601@gmail.com> JuanPa wrote: > Hola listeros.... > Te agradezco nuevamente Rodrigo por dar tu valioso tiempo aclarando > mis dudas, > > A raiz de es comentario es que he optado por utilizar mis clasicas > conexiones no persistentes . ejalé ;) > > Es mejor usar conexiones no persistentes, es decir, abriendo la > conexión > al principio de tu script y cerrando la conexión al final, pues > siempre > vas a tener páginas que no hagan ninguna consulta a la base de > datos... > ¿Para qué, entonces, tendrás una conexión abierta? Es únicamente un > desperdicio de recursos. > > > Ademas no voy a esperar que el GC (Garbage Colector) haga su trabajo, > una ultima cosa... Bueno el recolector de basura funcionará igual, pero cerrando menos cosas. > > Por eso es mejor abrir la conexión al principio de un script y > cerrarla > al final, y si tienes funciones que recuperan datos como el caso > de tu > buscar alumno, en vez de abrir una conexión nueva, preguntes si ya hay > una conexión abierta para aprovecharla. > > > Pero ¿ esto no significa que la conexion deberìa ser persistente? o te > refieres a que deberia pasar por parametros a mi objeto conexion que > tiene un recurso de conexion interno($link) y luego verificar si esta > está abierta. Una conexión no persistente se abre al inicio de un archivo (supongamos insertar.php) y se debe cerrar al final de éste. Si tienes un archivo que se llama modificar.php, ese debe declarar otra conexión, pues la primera no estará. La conexión persistente se abre al inicio de la sesión (mientras el usuario está conectado) y puede pasarse por varias páginas. Si tienes un archivo insertar, modificar, eliminar, buscar, etc, cuantoquieras.php, todos esos archivos usarán conexiones persistentes. Esto es cierto, yo dije "una vez por usuario/sesión", queriendo enfocar a que la conexión estaba abierta y podía ser aprovechada por varias páginas que visita un usuario desde un navegador. (pues una conexión se abre solamente para un usuario). > Y finalmente cuando dices... > > Cualquiera de las dos conexiones funciona así, la diferencia es > que la > persistente la abres una vez por usuario (o por conexion?) ... > > Esto significa ¿ Que la conexion seguira abierta en cada script que > valla ejecutando el usuario, mientras no se cierre explicitamente en > otro script o cuando el usuario cierre el navegador ? Ahhh, eso con ejemplo (ahora haré código real con adodb)... "notese, solamente una conexión no persistente" NConnect($host,$user,$pass,$base); $sql = $conexion->Prepare("SELECT * FROM alumno WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); $conexion->Close(); echo("Abriendo la segunda conexión"); $conexion = ADONewConnection("postgres"); $conexion->NConnect($host,$user,$pass,$base); $sql = $conexion->Prepare("SELECT * FROM apoderado WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); $conexion->Close(); $conexion = ADONewConnection("postgres"); $conexion->NConnect($host,$user,$pass,$base); $sql = $conexion->Prepare("SELECT * FROM cuotas WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); $conexion->Close(); ?> El ejemplo anterior es un script demasiado mega mal hecho. Abres tres veces una conexión nueva y no destruyes las conexiones anteriores. Digamos que solamente las desconectas. Uhhh, en este pequeño script te gastaste tres conexiones. ¿Qué mal, no?. Pues ahora veamos cómo lo habría hecho con una sola conexión no persistente. NConnect($host,$user,$pass,$base); dibujemos(); // con la misma conexion no persistente, puedes hacer UNA $sql = $conexion->Prepare("SELECT * FROM alumno WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); juguemos_en_el_bosque(); // DOS $sql = $conexion->Prepare("SELECT * FROM apoderado WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); mientras_el_lobo_no_esta(); // TRES y más consultas en el mismo script. $sql = $conexion->Prepare("SELECT * FROM cuotas WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); lobo_esta(?); // Y antes de cerrar el script, la conexión se cierra sola. $conexion->Close(); terminado(); exit(); ?> El ejemplito este aprovecha una sola conexión no persistente, pero usando solamente "UN" script, lo cual a pesar de que está bien, te ensucia un poco el código y te lo hace un poquito ilegible, por todas esas SQL por aquí y por allá. OK, ahora vamos a hacer un script para las funciones, un script para abrir y cerrar la conexión, y tu script de lógica de negocios: NConnect($host, $user, $pass, $base); if(!$conexion->IsConnected) { die("Arghhh mi jefe me va a matar! me pitié la conexión"); } } // la función que cierra con llave cuando nos vayamos ;) function cerrar_conexion(); { if($conexion->IsConnected) { $conexion->Close(); } } ?> Nótese que compartir conexiones entre procesos (pooling) tiene diferencias con aprovechar las conexiones no persistentes: lo que vamos a hacer en el siguiente archivo aprovecha una conexión no persistente que esté abierta, en vez de estar abriendo y cerrando. Esto para mí también es llamado pooling, pero básico, y aunque no sea un proceso automatizado, así es como trabaja... La idea es siempre tener una y sólo una conexión disponible cuando la usemos sin tener que abrirla más que lo necesario, y cerrarla cuando ya tengamos todas nuestras operaciones hechas y no vayamos a usarla de inmediato, bien por estar requiriendo datos, bien por ya haberlos obtenido y estamos mostrándolos en otra página. La cerramos para liberar recursos y así optimizamos cualquier cantidad de memoria. Esta clase de pooling no comparte conexiones entre procesos (para mí un proceso tiene un PID y tiene un destino distinto). IsConnected || !isset($conexion)) { abrir_conexion(); } $sql = $conexion->Prepare("SELECT * FROM alumno WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array($rut)); return $rs; } // una funcion que lo unico que hace es retornar el recordset. function buscar_apoderado($rut) { if(!$conexion->IsConnected || !isset($conexion)) { abrir_conexion(); } $sql = $conexion->Prepare("SELECT * FROM apoderado WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array($rut)); return $rs; } // una funcion que lo unico que hace es retornar el recordset. function buscar_cuotas($rut) { si la conexión no existe, o no se ha seteado, entonces abrimos la conexion. Si la conexion existe, para que? if(!$conexion->IsConnected || !isset($conexion)) { abrir_conexion(); } $sql = $conexion->Prepare("SELECT * FROM cuotas WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array($rut)); return $rs; } ?> Como puedes ver, finalmente son más archivos, pero el que te interesa que es la lógica de negocios, te queda lindo para leer. La cosa es diseñar un poco más ordenado. El que programes en 3, 4, 5 o 100 capas si quieres no significa que las capas no se interconecten, pues la lógica de presentación necesita que la lógica de negocios le pase datos, y la lógica de negocios necesita conectarse a la base de datos, para que tenga algo que procesar!!! > Mil disculpas si soy muy pregunton, pero siempre me gusta sacar > conclusiones valiosas de las conversaciones.... Gracias de antemano... Cero dramas. Si Google no es claro en el asunto (de hecho no lo fue cuando lo investigué) no hay problemas en discutirlo y aclarar las dudas. > Nos leemos > ----------------- > Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060210/d1b99158/attachment-0001.html From roman_astorga en hotmail.com Fri Feb 10 16:17:36 2006 From: roman_astorga en hotmail.com (Roman Jesus) Date: Fri Feb 10 16:56:05 2006 Subject: Pool de conexiones en PHP In-Reply-To: <43ECD6BB.9020601@gmail.com> Message-ID: Amigos de la lista: Al iniciar mi comentario pensaba tener razones mas que justificadas para mi forma de trabajo, pero ahora que lo pienso con mas detenimiento no estoy tan seguro. Bien les expongo de que se trata. Uno de los mayores peligros que enfrentamos cuando programamos en una Web es el tema de la conexión a una Vd., sobre todo cuando la información que estamos desplegando es lo suficiente grande para que se produzca un pequeño retardo en la consulta y el retorno de la información. No falta quien por desgracia presionan la tecla F5 reiteradas veces o la dejan presionada, en otras palabras se interrumpa la carga de la pagina con el propósito de generar una sobre carga de conexiones simultaneas. Lo cual podrá permitir que se generen N -1 cantidad de conexiones simultaneas desde el mismo punto y si sumamos al menos dos tipos así haciendo esto al mismo tiempo, nuestro amado servidor no quedaría desprotegido... _____ De: php-bounces@listas.inf.utfsm.cl [mailto:php-bounces@listas.inf.utfsm.cl] En nombre de Rodrigo Fuentealba Enviado el: 10-02-2006 15:09 Para: Lista de desarrolladores en PHP Asunto: Re: Pool de conexiones en PHP JuanPa wrote: Hola listeros.... Te agradezco nuevamente Rodrigo por dar tu valioso tiempo aclarando mis dudas, A raiz de es comentario es que he optado por utilizar mis clasicas conexiones no persistentes . ejalé ;) Es mejor usar conexiones no persistentes, es decir, abriendo la conexión al principio de tu script y cerrando la conexión al final, pues siempre vas a tener páginas que no hagan ninguna consulta a la base de datos... ¿Para qué, entonces, tendrás una conexión abierta? Es únicamente un desperdicio de recursos. Ademas no voy a esperar que el GC (Garbage Colector) haga su trabajo, una ultima cosa... Bueno el recolector de basura funcionará igual, pero cerrando menos cosas. Por eso es mejor abrir la conexión al principio de un script y cerrarla al final, y si tienes funciones que recuperan datos como el caso de tu buscar alumno, en vez de abrir una conexión nueva, preguntes si ya hay una conexión abierta para aprovecharla. Pero ¿ esto no significa que la conexion deberìa ser persistente? o te refieres a que deberia pasar por parametros a mi objeto conexion que tiene un recurso de conexion interno($link) y luego verificar si esta está abierta. Una conexión no persistente se abre al inicio de un archivo (supongamos insertar.php) y se debe cerrar al final de éste. Si tienes un archivo que se llama modificar.php, ese debe declarar otra conexión, pues la primera no estará. La conexión persistente se abre al inicio de la sesión (mientras el usuario está conectado) y puede pasarse por varias páginas. Si tienes un archivo insertar, modificar, eliminar, buscar, etc, cuantoquieras.php, todos esos archivos usarán conexiones persistentes. Esto es cierto, yo dije "una vez por usuario/sesión", queriendo enfocar a que la conexión estaba abierta y podía ser aprovechada por varias páginas que visita un usuario desde un navegador. (pues una conexión se abre solamente para un usuario). Y finalmente cuando dices... Cualquiera de las dos conexiones funciona así, la diferencia es que la persistente la abres una vez por usuario (o por conexion?) ... Esto significa ¿ Que la conexion seguira abierta en cada script que valla ejecutando el usuario, mientras no se cierre explicitamente en otro script o cuando el usuario cierre el navegador ? Ahhh, eso con ejemplo (ahora haré código real con adodb)... "notese, solamente una conexión no persistente" NConnect($host,$user,$pass,$base); $sql = $conexion->Prepare("SELECT * FROM alumno WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); $conexion->Close(); echo("Abriendo la segunda conexión"); $conexion = ADONewConnection("postgres"); $conexion->NConnect($host,$user,$pass,$base); $sql = $conexion->Prepare("SELECT * FROM apoderado WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); $conexion->Close(); $conexion = ADONewConnection("postgres"); $conexion->NConnect($host,$user,$pass,$base); $sql = $conexion->Prepare("SELECT * FROM cuotas WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); $conexion->Close(); ?> El ejemplo anterior es un script demasiado mega mal hecho. Abres tres veces una conexión nueva y no destruyes las conexiones anteriores. Digamos que solamente las desconectas. Uhhh, en este pequeño script te gastaste tres conexiones. ¿Qué mal, no?. Pues ahora veamos cómo lo habría hecho con una sola conexión no persistente. NConnect($host,$user,$pass,$base); dibujemos(); // con la misma conexion no persistente, puedes hacer UNA $sql = $conexion->Prepare("SELECT * FROM alumno WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); juguemos_en_el_bosque(); // DOS $sql = $conexion->Prepare("SELECT * FROM apoderado WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); mientras_el_lobo_no_esta(); // TRES y más consultas en el mismo script. $sql = $conexion->Prepare("SELECT * FROM cuotas WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array('12345678-9')); lobo_esta(?); // Y antes de cerrar el script, la conexión se cierra sola. $conexion->Close(); terminado(); exit(); ?> El ejemplito este aprovecha una sola conexión no persistente, pero usando solamente "UN" script, lo cual a pesar de que está bien, te ensucia un poco el código y te lo hace un poquito ilegible, por todas esas SQL por aquí y por allá. OK, ahora vamos a hacer un script para las funciones, un script para abrir y cerrar la conexión, y tu script de lógica de negocios: NConnect($host, $user, $pass, $base); if(!$conexion->IsConnected) { die("Arghhh mi jefe me va a matar! me pitié la conexión"); } } // la función que cierra con llave cuando nos vayamos ;) function cerrar_conexion(); { if($conexion->IsConnected) { $conexion->Close(); } } ?> Nótese que compartir conexiones entre procesos (pooling) tiene diferencias con aprovechar las conexiones no persistentes: lo que vamos a hacer en el siguiente archivo aprovecha una conexión no persistente que esté abierta, en vez de estar abriendo y cerrando. Esto para mí también es llamado pooling, pero básico, y aunque no sea un proceso automatizado, así es como trabaja... La idea es siempre tener una y sólo una conexión disponible cuando la usemos sin tener que abrirla más que lo necesario, y cerrarla cuando ya tengamos todas nuestras operaciones hechas y no vayamos a usarla de inmediato, bien por estar requiriendo datos, bien por ya haberlos obtenido y estamos mostrándolos en otra página. La cerramos para liberar recursos y así optimizamos cualquier cantidad de memoria. Esta clase de pooling no comparte conexiones entre procesos (para mí un proceso tiene un PID y tiene un destino distinto). IsConnected || !isset($conexion)) { abrir_conexion(); } $sql = $conexion->Prepare("SELECT * FROM alumno WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array($rut)); return $rs; } // una funcion que lo unico que hace es retornar el recordset. function buscar_apoderado($rut) { if(!$conexion->IsConnected || !isset($conexion)) { abrir_conexion(); } $sql = $conexion->Prepare("SELECT * FROM apoderado WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array($rut)); return $rs; } // una funcion que lo unico que hace es retornar el recordset. function buscar_cuotas($rut) { si la conexión no existe, o no se ha seteado, entonces abrimos la conexion. Si la conexion existe, para que? if(!$conexion->IsConnected || !isset($conexion)) { abrir_conexion(); } $sql = $conexion->Prepare("SELECT * FROM cuotas WHERE rut_alumno = ?"); $rs = $conexion->Execute($sql,array($rut)); return $rs; } ?> Como puedes ver, finalmente son más archivos, pero el que te interesa que es la lógica de negocios, te queda lindo para leer. La cosa es diseñar un poco más ordenado. El que programes en 3, 4, 5 o 100 capas si quieres no significa que las capas no se interconecten, pues la lógica de presentación necesita que la lógica de negocios le pase datos, y la lógica de negocios necesita conectarse a la base de datos, para que tenga algo que procesar!!! Mil disculpas si soy muy pregunton, pero siempre me gusta sacar conclusiones valiosas de las conversaciones.... Gracias de antemano... Cero dramas. Si Google no es claro en el asunto (de hecho no lo fue cuando lo investigué) no hay problemas en discutirlo y aclarar las dudas. Nos leemos ----------------- Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060210/bb13ef6c/attachment-0001.html From rmunoz en pjud.cl Fri Feb 10 18:20:39 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Fri Feb 10 18:13:12 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: Message-ID: <43ED03A7.3090100@pjud.cl> Roman Jesus escribió: > Amigos de la lista: > > Al iniciar mi comentario pensaba tener razones mas que justificadas para mi > forma de trabajo, pero ahora que lo pienso con mas detenimiento no estoy tan > seguro. > > Bien les expongo de que se trata. > > Uno de los mayores peligros que enfrentamos cuando programamos en una Web es > el tema de la conexión a una Vd., sobre todo cuando la información que > estamos desplegando es lo suficiente grande para que se produzca un pequeño > retardo en la consulta y el retorno de la información. > > No falta quien por desgracia presionan la tecla F5 reiteradas veces o la > dejan presionada, en otras palabras se interrumpa la carga de la pagina con > el propósito de generar una sobre carga de conexiones simultaneas. > > Lo cual podrá permitir que se generen N -1 cantidad de conexiones > simultaneas desde el mismo punto y si sumamos al menos dos tipos así > haciendo esto al mismo tiempo, nuestro amado servidor no quedaría > desprotegido... > te felicito, descubriste de que se trata un ataque DDOS[1]! ;) por suerte, el Apache deja "encoladas" las conexiones cuando superan la cantidad de MaxClientes, quedando obviamente el sistema muy lento para todos los usuarios. un buen Firewall/IDS es capaz de proteger al servidor de ese tipo de ataques, claro que un buen ataque DDOS se ejecuta desde cientos/miles de IPs diferentes... [1] http://en.wikipedia.org/wiki/DDOS -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From juanpablo.magno en gmail.com Fri Feb 10 19:11:26 2006 From: juanpablo.magno en gmail.com (JuanPa) Date: Fri Feb 10 19:01:16 2006 Subject: Pool de conexiones en PHP In-Reply-To: <43ED03A7.3090100@pjud.cl> References: <43ED03A7.3090100@pjud.cl> Message-ID: Bueno listeros... nuevamente agradecerles toda su colaboracion. Ahora me ha entrado el bicho de la curiosidad por todo en cuanto a procesos, conexiones, acho de banda y todos esos chiches que antes no me importaban, sera mejor que me ponga a investigar--- GOOGLE ahi voy. El día 10/02/06, Ricardo Mun~oz A. escribió: > > Roman Jesus escribió: > > Amigos de la lista: > > > > Al iniciar mi comentario pensaba tener razones mas que justificadas para > mi > > forma de trabajo, pero ahora que lo pienso con mas detenimiento no estoy > tan > > seguro. > > > > Bien les expongo de que se trata. > > > > Uno de los mayores peligros que enfrentamos cuando programamos en una > Web es > > el tema de la conexión a una Vd., sobre todo cuando la información que > > estamos desplegando es lo suficiente grande para que se produzca un > pequeño > > retardo en la consulta y el retorno de la información. > > > > No falta quien por desgracia presionan la tecla F5 reiteradas veces o > la > > dejan presionada, en otras palabras se interrumpa la carga de la pagina > con > > el propósito de generar una sobre carga de conexiones simultaneas. > > > > Lo cual podrá permitir que se generen N -1 cantidad de conexiones > > simultaneas desde el mismo punto y si sumamos al menos dos tipos así > > haciendo esto al mismo tiempo, nuestro amado servidor no quedaría > > desprotegido... > > > te felicito, descubriste de que se trata un ataque DDOS[1]! ;) > > por suerte, el Apache deja "encoladas" las conexiones cuando superan la > cantidad > de MaxClientes, quedando obviamente el sistema muy lento para todos los > usuarios. > > un buen Firewall/IDS es capaz de proteger al servidor de ese tipo de > ataques, claro > que un buen ataque DDOS se ejecuta desde cientos/miles de IPs > diferentes... > > [1] http://en.wikipedia.org/wiki/DDOS > > -- > Ricardo Mun~oz A. > Usuario Linux #182825 (counter.li.org) > -- Juan Pablo ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060210/0b287b10/attachment.html From darkprox en gmail.com Fri Feb 10 19:29:54 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Fri Feb 10 19:19:45 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: Message-ID: <43ED13E2.8060005@gmail.com> Roman Jesus wrote: > Amigos de la lista: > > Al iniciar mi comentario pensaba tener razones mas que justificadas > para mi forma de trabajo, pero ahora que lo pienso con mas > detenimiento no estoy tan seguro. Siempre tenemos dudas existenciales. > Uno de los mayores peligros que enfrentamos cuando programamos en una > Web es el tema de la conexión a una Vd., sobre todo cuando la > información que estamos desplegando es lo suficiente grande para que > se produzca un pequeño retardo en la consulta y el retorno de la > información. Me ha pasado... después de un infinite loop con una bd sobretodo cuando me olvido de mover el registro al siguiente... > No falta quien por desgracia presionan la tecla F5 reiteradas veces o > la dejan presionada, en otras palabras se interrumpa la carga de la > pagina con el propósito de generar una sobre carga de conexiones > simultaneas. Lo más sano para evitar en cierta medida esto, es que inicialicemos nuestras variables. Además, las peticiones en serie se encolan por lo que el peligro no es tanto. Aparte, si abres una página, la página anterior se cierra y el script queda ejecutando pero enviando datos a ninguna parte, lo que provoca que el recolector de basura inmediatamente limpie la conexión y vaya eliminando las conexiones. Es una limitante de las computadoras, que puede mejorarse con un IDS, el mod_security o bien con un balanceador de carga. No nos queda más que convivir con esto, y tomar las precauciones de seguridad suficientes para "no" exponer nuestros datos (un servidor aparte para las BD, y un servidor aparte para el e-mail) que ya no corren por cuenta de la configuración de Apache o PHP, sino por una cosa de hardware > Lo cual podrá permitir que se generen N -1 cantidad de conexiones > simultaneas desde el mismo punto y si sumamos al menos dos tipos así > haciendo esto al mismo tiempo, nuestro amado servidor no quedaría > desprotegido... From anabela_romina en waycomnet.com.ar Fri Feb 10 19:00:59 2006 From: anabela_romina en waycomnet.com.ar (Anabela) Date: Fri Feb 10 19:21:32 2006 Subject: combos combinados Message-ID: <43ED0D1B.000006.02716@ANABELA> Saltado el tipo de contenido multipart/alternative------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : image/gif Tamaño : 3027 bytes Descripción: no disponible Url : http://listas.inf.utfsm.cl/pipermail/php/attachments/20060210/824ce85f/attachment-0002.gif ------------ próxima parte ------------ Se ha borrado un mensaje que no está en formato texto plano... Nombre : no disponible Tipo : image/gif Tamaño : 12796 bytes Descripción: no disponible Url : http://listas.inf.utfsm.cl/pipermail/php/attachments/20060210/824ce85f/attachment-0003.gif From wothoti en hotmail.com Sat Feb 11 01:28:09 2006 From: wothoti en hotmail.com (Patricio Villalobos R.) Date: Sat Feb 11 02:05:04 2006 Subject: Desplegar imagen Message-ID: Hola a todos, les cuento, estoy haciendo una agenda telefonica (bueno con otras cosas mas) simple en todo caso, la base de datos la tengo en postgresql y con imágenes de mis contactos, ahora viene mi gran duda, como puedo desplegar (mostrar) esa imagen con el php utilizando algún objeto o de alguna manera ? Via comando lo hago bien y funciona, el tipo de datos que uso es “oid” y la importo con “lo_import()”y exporto con “lo_export()” en el /tmp, ahora no se si se pueda es hacerlo pero en forma directa en algun objeto sin necesidad de que tenga que pasar por la creacion de un archivo (no se si me explico bien) pero de ante mano gracias. Ahh estoy utilizando debian etch. -- Patrocio Villalobos Rojas La Serena, Chile ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060211/720affd3/attachment.html From jmvidal en sertotal.cl Sat Feb 11 03:56:26 2006 From: jmvidal en sertotal.cl (Jose Miguel Vidal Lavin) Date: Sat Feb 11 04:26:31 2006 Subject: Desplegar imagen In-Reply-To: References: Message-ID: <43ED8A9A.6040604@sertotal.cl> Patricio Villalobos R. wrote: > Hola a todos, les cuento, estoy haciendo una agenda telefonica (bueno > con otras cosas mas) simple en todo caso, la base de datos la tengo en > postgresql y con imágenes de mis contactos, ahora viene mi gran duda, > como puedo desplegar (mostrar) esa imagen con el php utilizando algún > objeto o de alguna manera ? > > Via comando lo hago bien y funciona, el tipo de datos que uso es ?oid? > y la importo con ?lo_import()?y exporto con ?lo_export()? en el /tmp, > ahora no se si se pueda es hacerlo pero en forma directa en algun > objeto sin necesidad de que tenga que pasar por la creacion de un > archivo (no se si me explico bien) pero de ante mano gracias. > > Ahh estoy utilizando debian etch. > > -- > > Patrocio Villalobos Rojas > > La Serena, Chile > con apt-get install php4-gd solucionas todo, un restart de apache y listo,revisa la documentacion de la libreria de gd de php, es muy facil de usar. saludos From rmunoz en pjud.cl Mon Feb 13 09:19:03 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Mon Feb 13 10:04:24 2006 Subject: Desplegar imagen In-Reply-To: References: Message-ID: <43F07937.1020600@pjud.cl> Patricio Villalobos R. escribió: > Hola a todos, les cuento, estoy haciendo una agenda telefonica (bueno con > otras cosas mas) simple en todo caso, la base de datos la tengo en > postgresql y con imágenes de mis contactos, ahora viene mi gran duda, como > puedo desplegar (mostrar) esa imagen con el php utilizando algún objeto o de > alguna manera ? > > > > Via comando lo hago bien y funciona, el tipo de datos que uso es ?oid? y la > importo con ?lo_import()?y exporto con ?lo_export()? en el /tmp, ahora no se > si se pueda es hacerlo pero en forma directa en algun objeto sin necesidad > de que tenga que pasar por la creacion de un archivo (no se si me explico > bien) pero de ante mano gracias. > puede que te sirva la funcion pg_lo_read(): http://cl.php.net/manual/es/function.pg-lo-read.php pd. revisa el ejemplo. -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From ergutier en articlynx.cl Tue Feb 14 11:55:53 2006 From: ergutier en articlynx.cl (Esteban Gutierrez) Date: Tue Feb 14 13:15:49 2006 Subject: Reservas de Equipos Message-ID: <15525.200.75.14.66.1139928953.squirrel@mail.articlynx.cl> Buenas tardes lista. Queria saber si existe en algún lado algún SW que me permita reservar Equipamiento o salas. O también si existe algún SW de CYBER CAFË que se pueda adpatar para reserva de equipos (prestamos de computadores, cables, etc) De antemano, muchas gracias. From darkprox en gmail.com Tue Feb 14 15:10:38 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Tue Feb 14 15:00:22 2006 Subject: Reservas de Equipos In-Reply-To: <15525.200.75.14.66.1139928953.squirrel@mail.articlynx.cl> References: <15525.200.75.14.66.1139928953.squirrel@mail.articlynx.cl> Message-ID: <43F21D1E.2020807@gmail.com> Estimado Esteban: A pesar de que no es el tópico, te responderé: --> CyberKuentas para Windows. --> Zeiberbude para Linux/Windows. Ambos los he probado y me quedo con el CyberKuentas para Windows, porque es más práctico. Un rápido search en Google ("Cybercafé Linux", 30 segundos) nos da: --> http://mail.linux.org.mx/pipermail/ayuda/2003-April/006858.html Ahora mi flamecillo: La lista, así como otros métodos de ayuda, son para *ayudar*, no para *reemplazar a Google*. Esteban Gutierrez wrote: > Buenas tardes lista. > > Queria saber si existe en algún lado algún SW que me permita reservar > Equipamiento o salas. O también si existe algún SW de CYBER CAFË que se > pueda adpatar para reserva de equipos (prestamos de computadores, cables, > etc) > > De antemano, muchas gracias. From rougetbugueno en yahoo.es Wed Feb 15 11:12:04 2006 From: rougetbugueno en yahoo.es (Rouget Bugueno S.) Date: Wed Feb 15 12:02:35 2006 Subject: FTP con problemas In-Reply-To: <20060214151903.86635.qmail@web32605.mail.mud.yahoo.com> Message-ID: <20060215141204.4373.qmail@web25606.mail.ukl.yahoo.com> Hola a Todos.... Voy al grano.... necesito ayuda por que al ejecutar un script con el cron de linux (creado por medio de cpanel), me da el error que se muestra acontinuación y entiendo que si lee el script php (el que debe hacer un FTP a otro servidor), pero es al ejecutarlo que me da error. lo raro de esto es que si ejecuto el mismo script desde un browser funciona. El Error: /home/user/public_html/importacion/ftp.php: line 1: ?php: No such file or directory /home/user/public_html/importacion/ftp.php: line 2: syntax error near unexpected token `;' /home/user/public_html/importacion/ftp.php: line 2: `session_start();' El script: // la informacion del servidor la he cambiado por seguridad... Desde ya gracias... saludos!! --------------------------------- LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060215/98bd6726/attachment.html From rmunoz en pjud.cl Wed Feb 15 12:35:57 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Wed Feb 15 13:27:33 2006 Subject: FTP con problemas In-Reply-To: <20060215141204.4373.qmail@web25606.mail.ukl.yahoo.com> References: <20060215141204.4373.qmail@web25606.mail.ukl.yahoo.com> Message-ID: <43F34A5D.1060105@pjud.cl> Rouget Bugueno S. escribió: > Hola a Todos.... > Voy al grano.... necesito ayuda por que al ejecutar un script con el cron de linux (creado por medio de cpanel), me da el error que se muestra acontinuación y entiendo que si lee el script php (el que debe hacer un FTP a otro servidor), pero es al ejecutarlo que me da error. lo raro de esto es que si ejecuto el mismo script desde un browser funciona. > > El Error: > /home/user/public_html/importacion/ftp.php: line 1: ?php: No such file or directory > /home/user/public_html/importacion/ftp.php: line 2: syntax error near unexpected token `;' > /home/user/public_html/importacion/ftp.php: line 2: `session_start();' > > El script: > session_start(); > tu script debe quedar asi: #! /usr/bin/php -q mas info en -> http://cl.php.net/manual/es/features.commandline.php -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From roman_astorga en hotmail.com Wed Feb 15 12:57:37 2006 From: roman_astorga en hotmail.com (Roman Jesus) Date: Wed Feb 15 13:35:43 2006 Subject: FTP con problemas In-Reply-To: <20060215141204.4373.qmail@web25606.mail.ukl.yahoo.com> Message-ID: Hola Entiendo que este script lo ejecutaste desde un servidor web corriendo sin problemas, lo cual me dice que lo estas ejecutando desde una consola, en base a esto tienes el cliente de php instalado? _____ De: php-bounces@listas.inf.utfsm.cl [mailto:php-bounces@listas.inf.utfsm.cl] En nombre de Rouget Bugueno S. Enviado el: 15-02-2006 11:12 Para: php@listas.inf.utfsm.cl Asunto: FTP con problemas Hola a Todos.... Voy al grano.... necesito ayuda por que al ejecutar un script con el cron de linux (creado por medio de cpanel), me da el error que se muestra acontinuación y entiendo que si lee el script php (el que debe hacer un FTP a otro servidor), pero es al ejecutarlo que me da error. lo raro de esto es que si ejecuto el mismo script desde un browser funciona. El Error: /home/user/public_html/importacion/ftp.php: line 1: ?php: No such file or directory /home/user/public_html/importacion/ftp.php: line 2: syntax error near unexpected token `;' /home/user/public_html/importacion/ftp.php: line 2: `session_start();' El script: // la informacion del servidor la he cambiado por seguridad... Desde ya gracias... saludos!! _____ LLama Gratis a cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo por minuto. http://es.voice.yahoo.com ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060215/1ecfb0ae/attachment.html From jfsp24 en gmail.com Wed Feb 15 17:52:08 2006 From: jfsp24 en gmail.com (Jose Felipe Sanhueza Paredes) Date: Wed Feb 15 17:41:37 2006 Subject: acceso desde una pagina a otra, a traves de metodo POST Message-ID: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> buenas, resulta que tengo el sigiuente dilema...me encargaron que desde una intranet acceder a un sistema oracle cuando el usuario lo necesite (es decir, puede navegar por muchas partes, y al final acceder al oracle)..asi de sencillo.... cual es la solucion que pienso... centralizar todas las contraseñas a traves de un directorio ldap (ya esta listo y verificado).. si tiene acceso al sistema de oracle (verificando si existe en arbol correspondiente en el ldap), le habilito un link hacia el sistema, PERO el logeo del oracle esta por metodo post (si fuese por get seria armar el url hacia el programa q verifica sesion)...alguna idea de como hacerlo?...podria llegar y hacer algo asi de directo?
se entiende la pregunta??..hay algo como persistencia de sesiones?.. gracias.. ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060215/d4949172/attachment.html From rmunoz en pjud.cl Wed Feb 15 18:00:03 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Wed Feb 15 17:52:05 2006 Subject: acceso desde una pagina a otra, a traves de metodo POST In-Reply-To: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> References: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> Message-ID: <43F39653.1020609@pjud.cl> Jose Felipe Sanhueza Paredes escribió: > buenas, resulta que tengo el sigiuente dilema...me encargaron que desde una > intranet acceder a un sistema oracle cuando el usuario lo necesite (es > decir, puede navegar por muchas partes, y al final acceder al oracle)..asi > de sencillo.... > cual es la solucion que pienso... > centralizar todas las contraseñas a traves de un directorio ldap (ya esta > listo y verificado).. > si tiene acceso al sistema de oracle (verificando si existe en arbol > correspondiente en el ldap), le habilito un link hacia el sistema, PERO el > logeo del oracle esta por metodo post (si fuese por get seria armar el url > hacia el programa q verifica sesion)...alguna idea de como hacerlo?...podria > llegar y hacer algo asi de directo? > >
> > > >
> > se entiende la pregunta??..hay algo como persistencia de sesiones?.. > gracias.. > se entiende la pregunta, lo que no se entiende es a que te refieres con "sistema Oracle"? es otra aplicacion web?? esta en el mismo servidor?? -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From jfsp24 en gmail.com Wed Feb 15 18:13:22 2006 From: jfsp24 en gmail.com (Jose Felipe Sanhueza Paredes) Date: Wed Feb 15 18:02:50 2006 Subject: acceso desde una pagina a otra, a traves de metodo POST In-Reply-To: <43F39653.1020609@pjud.cl> References: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> <43F39653.1020609@pjud.cl> Message-ID: <7c23e8cc0602151313j55193ce9k@mail.gmail.com> ok, es el Oracle Discoverer..efectivamente se ve a traves de web (intranet + sistema oracle), están en distintos servidores, pero no creo q influya mayormente si estan por web. El día 15/02/06, Ricardo Mun~oz A. escribió: > > Jose Felipe Sanhueza Paredes escribió: > > buenas, resulta que tengo el sigiuente dilema...me encargaron que desde > una > > intranet acceder a un sistema oracle cuando el usuario lo necesite (es > > decir, puede navegar por muchas partes, y al final acceder al > oracle)..asi > > de sencillo.... > > cual es la solucion que pienso... > > centralizar todas las contraseñas a traves de un directorio ldap (ya > esta > > listo y verificado).. > > si tiene acceso al sistema de oracle (verificando si existe en arbol > > correspondiente en el ldap), le habilito un link hacia el sistema, PERO > el > > logeo del oracle esta por metodo post (si fuese por get seria armar el > url > > hacia el programa q verifica sesion)...alguna idea de como > hacerlo?...podria > > llegar y hacer algo asi de directo? > > > >
> > > > > > > >
> > > > se entiende la pregunta??..hay algo como persistencia de sesiones?.. > > gracias.. > > > se entiende la pregunta, lo que no se entiende es a que te refieres con > "sistema Oracle"? es otra aplicacion web?? esta en el mismo servidor?? > > -- > Ricardo Mun~oz A. > Usuario Linux #182825 (counter.li.org) > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060215/cdc33c64/attachment-0001.html From rmunoz en pjud.cl Wed Feb 15 18:18:04 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Wed Feb 15 18:10:07 2006 Subject: acceso desde una pagina a otra, a traves de metodo POST In-Reply-To: <7c23e8cc0602151313j55193ce9k@mail.gmail.com> References: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com><43F39653.1020609@p jud.cl> <7c23e8cc0602151313j55193ce9k@mail.gmail.com> Message-ID: <43F39A8C.8050907@pjud.cl> Jose Felipe Sanhueza Paredes escribió: > ok, es el Oracle Discoverer..efectivamente se ve a traves de web (intranet + > sistema oracle), están en distintos servidores, pero no creo q influya > mayormente si estan por web. > en realidad, el ejemplo que indicaste deberia funcionar, probaste hacerlo de esa forma?? -- Ricardo Mun~oz A. Proyecto Poder Judicial, DISC Ltda. (02) 674.6610 / (02) 674.6650 From darkprox en gmail.com Wed Feb 15 18:30:17 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Wed Feb 15 18:19:50 2006 Subject: acceso desde una pagina a otra, a traves de metodo POST In-Reply-To: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> References: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> Message-ID: <43F39D69.3000706@gmail.com> Jose Felipe Sanhueza Paredes wrote: > buenas, resulta que tengo el sigiuente dilema...me encargaron que > desde una intranet acceder a un sistema oracle cuando el usuario lo > necesite (es decir, puede navegar por muchas partes, y al final > acceder al oracle)..asi de sencillo.. No entendí mucho la pregunta... pero a ver si te sirve esto: --- la página de donde está el botón --- Esta página será la que te lleve a tu otra aplicación, con una pequeña función en javascript que haga por ti la recarga. Podría no funcionar con algún navegador, pero a mí me ha funcionado en todos hasta ahora. function recarga(url,formulario) { str1='window.document.'+formulario+'.action='+'"'+url+'"'; str2='window.document.'+formulario+'.submit()'; eval(str1); eval(str2); } <...>
> >
<...> --- la página de inicio de sesión (pagina.oracle) --- Esta página deberá estar en alguna parte de tu otra aplicación Oracle, sea cual sea, en el servidor web que sea. Tendrás que crear la sesión y utilizarla en la aplicación, haciendo referencia a $_SESSION['username'] y $_SESSION['password'] cada vez que necesites. La sesión deberá cerrarse explícitamente en la página de logout con $_SESSION=array(); session_destroy(); y deberías comprobar que los cookies estén habilitados para que la sesión sea persistente. Para un poco más de seguridad, conviene mirar en pear.php.net el package pear/HTTP_Session, que permite simplificar el proceso de sesiones, agregando un idle o algo así. > cual es la solucion que pienso... > centralizar todas las contraseñas a traves de un directorio ldap (ya > esta listo y verificado).. > si tiene acceso al sistema de oracle (verificando si existe en arbol > correspondiente en el ldap), le habilito un link hacia el sistema, > PERO el logeo del oracle esta por metodo post (si fuese por get seria > armar el url hacia el programa q verifica sesion)...alguna idea de > como hacerlo?...podria llegar y hacer algo asi de directo? Comentario al margen: usar GET para pasar contraseñas de una página a otra es --->demasiado<--- inseguro. > >
> > > >
Sí, las sesiones en sí mismas... si quieres usar datos de una sesión en otra, es bueno y fácil (no sé si lo mejor, a decir verdad lo dudo y desconfío mucho de los métodos POST y GET, quizás alguien más en la lista podría aportar más métodos de seguridad) pasarlas de esta forma. Validar, validar y más validar, esa es la clave. > se entiende la pregunta??..hay algo como persistencia de sesiones?.. > gracias.. From rmunoz en pjud.cl Wed Feb 15 18:38:27 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Wed Feb 15 18:30:30 2006 Subject: acceso desde una pagina a otra, a traves de metodo POST In-Reply-To: <43F39D69.3000706@gmail.com> References: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> <43F39D69.3000706@gmail.com> Message-ID: <43F39F53.1040801@pjud.cl> Rodrigo Fuentealba escribió: > --- la página de inicio de sesión (pagina.oracle) --- > Esta página deberá estar en alguna parte de tu otra aplicación Oracle, > sea cual sea, en el servidor web que sea. Tendrás que crear la sesión > y utilizarla en la aplicación, haciendo referencia a > $_SESSION['username'] y $_SESSION['password'] cada vez que necesites. > La sesión deberá cerrarse explícitamente en la página de logout con > $_SESSION=array(); session_destroy(); y deberías comprobar que los > cookies estén habilitados para que la sesión sea persistente. Para un > poco más de seguridad, conviene mirar en pear.php.net el package > pear/HTTP_Session, que permite simplificar el proceso de sesiones, > agregando un idle o algo así. > > session_start(); > > if(validar_post_login($_POST['user'],$_POST['pass'])) > { > $_SESSION['username'] = $_POST['user']; > $_SESSION['password'] = $_POST['pass']; > header('Location: pagina.oracle.inicio'); > exit(); > } es punto es que pagina.oracle.inicio tiene su propia forma de validacion de usuario/contrasen~a por lo que no se saca nada usando $_SESSION que solo sirve para PHP. enviandole mediante POST los datos del usuario deberia funcionar. -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From jfsp24 en gmail.com Wed Feb 15 18:46:42 2006 From: jfsp24 en gmail.com (Jose Felipe Sanhueza Paredes) Date: Wed Feb 15 18:36:09 2006 Subject: acceso desde una pagina a otra, a traves de metodo POST In-Reply-To: <43F39F53.1040801@pjud.cl> References: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> <43F39D69.3000706@gmail.com> <43F39F53.1040801@pjud.cl> Message-ID: <7c23e8cc0602151346p4be64f96u@mail.gmail.com> ok, probare lo ultimo, debo identificar no la pagina de inici odel sistema, sinno la pagina donde verifica la autenticacion del ususario ... a esa mandarle los parametros (q aparte de user y pass son bdd y otras cosas..) probare y estare avisando.. gracias.. El día 15/02/06, Ricardo Mun~oz A. escribió: > > Rodrigo Fuentealba escribió: > > > --- la página de inicio de sesión (pagina.oracle) --- > > Esta página deberá estar en alguna parte de tu otra aplicación Oracle, > > sea cual sea, en el servidor web que sea. Tendrás que crear la sesión > > y utilizarla en la aplicación, haciendo referencia a > > $_SESSION['username'] y $_SESSION['password'] cada vez que necesites. > > La sesión deberá cerrarse explícitamente en la página de logout con > > $_SESSION=array(); session_destroy(); y deberías comprobar que los > > cookies estén habilitados para que la sesión sea persistente. Para un > > poco más de seguridad, conviene mirar en pear.php.net el package > > pear/HTTP_Session, que permite simplificar el proceso de sesiones, > > agregando un idle o algo así. > > > > > session_start(); > > > > if(validar_post_login($_POST['user'],$_POST['pass'])) > > { > > $_SESSION['username'] = $_POST['user']; > > $_SESSION['password'] = $_POST['pass']; > > header('Location: pagina.oracle.inicio'); > > exit(); > > } > es punto es que pagina.oracle.inicio tiene su propia forma de validacion > de usuario/contrasen~a por lo que no se saca nada usando $_SESSION > que solo sirve para PHP. > > enviandole mediante POST los datos del usuario deberia funcionar. > > -- > Ricardo Mun~oz A. > Usuario Linux #182825 (counter.li.org) > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060215/1be3dadb/attachment.html From darkprox en gmail.com Wed Feb 15 18:50:11 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Wed Feb 15 18:39:45 2006 Subject: acceso desde una pagina a otra, a traves de metodo POST In-Reply-To: <43F39F53.1040801@pjud.cl> References: <7c23e8cc0602151252x5a193fa6g@mail.gmail.com> <43F39D69.3000706@gmail.com> <43F39F53.1040801@pjud.cl> Message-ID: <43F3A213.4080506@gmail.com> Ricardo Mun~oz A. wrote: > Rodrigo Fuentealba escribió: > >> --- la página de inicio de sesión (pagina.oracle) --- >> Esta página deberá estar en alguna parte de tu otra aplicación >> Oracle, sea cual sea, en el servidor web que sea. Tendrás que crear >> la sesión y utilizarla en la aplicación, haciendo referencia a >> $_SESSION['username'] y $_SESSION['password'] cada vez que necesites. >> La sesión deberá cerrarse explícitamente en la página de logout con >> $_SESSION=array(); session_destroy(); y deberías comprobar que los >> cookies estén habilitados para que la sesión sea persistente. Para un >> poco más de seguridad, conviene mirar en pear.php.net el package >> pear/HTTP_Session, que permite simplificar el proceso de sesiones, >> agregando un idle o algo así. >> >> > session_start(); >> >> if(validar_post_login($_POST['user'],$_POST['pass'])) >> { >> $_SESSION['username'] = $_POST['user']; >> $_SESSION['password'] = $_POST['pass']; >> header('Location: pagina.oracle.inicio'); >> exit(); >> } > es punto es que pagina.oracle.inicio tiene su propia forma de validacion > de usuario/contrasen~a por lo que no se saca nada usando $_SESSION > que solo sirve para PHP. > > enviandole mediante POST los datos del usuario deberia funcionar. Oh, lo lamento, esos antecedentes no los tenía. Otra cosa, para hacer la diferencia, normalmente empleo la palabra "validar" para comprobar que no se vaya a pasar un dato mal (p.ej. que no me vayan a pasar una inyección de código) y "autenticar" o "autentificar" para contrastar un nombre de usuario y una password proporcionados contra una base de datos/archivo/ldap/loquesea. Dato inútil, pero el castellano es muy rico y hay que saber hablarlo. Atte. Rodrigo. From keber en sictec.cl Fri Feb 17 13:26:51 2006 From: keber en sictec.cl (Keber Flores) Date: Fri Feb 17 14:16:46 2006 Subject: PHP+Oracle Message-ID: <003901c633de$f6a850e0$310aa8c0@eecolkeber> Hola Lista Tengo que desarrollar un módulo en php para una intranet, que extraiga unos datos de una db oracle y los coloque en mysql o posgress para manipularlos. Mi problema es que el php del servidor que ocupo no tiene soporte para oracle. ¿alguien sabe como compilar php con soporte para oracle? ¿o algún manual/link donde leer esta info? Gracias, Atte. Keber Flores B. programador ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060217/26bb9c43/attachment.html From darkprox en gmail.com Fri Feb 17 14:53:18 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Fri Feb 17 14:42:49 2006 Subject: PHP+Oracle In-Reply-To: <003901c633de$f6a850e0$310aa8c0@eecolkeber> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> Message-ID: <43F60D8E.60300@gmail.com> Keber Flores wrote: > Hola Lista > > Tengo que desarrollar un módulo en php para una intranet, que extraiga > unos datos de una db oracle y los coloque en mysql o posgress para > manipularlos. > Mi problema es que el php del servidor que ocupo no tiene soporte para > oracle. > > ¿alguien sabe como compilar php con soporte para oracle? ¿o algún > manual/link donde leer esta info? > > Gracias, > > Atte. > Keber Flores B. > programador El soporte de Oracle en PHP se llama "oci" u "oci8", y es algo complicadillo de hacer funcionar a veces. Solución "a la mala": podrias utilizar soporte ODBC, a pesar de que es un poco más lento. Deberás instalar unixODBC en Linux y configurar los DSN con una herramienta llamada ODBCConfig, o bien, hacerlo en Windows. Como yo nunca he instalado Oracle, no te podría decir cómo configurar Oracle para aceptar conexiones ODBC. ./configure --with-unixODBC=shared,/usr --with-odbc=unixODBC,/usr Atte. Rodrigo Fuentealba Cartes Coordinador General FLISOL Concepción 2006 darkprox@gmail.com From rmunoz en pjud.cl Fri Feb 17 14:41:56 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Fri Feb 17 15:30:27 2006 Subject: PHP+Oracle In-Reply-To: <003901c633de$f6a850e0$310aa8c0@eecolkeber> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> Message-ID: <43F60AE4.9060406@pjud.cl> Keber Flores escribió: > Hola Lista > > Tengo que desarrollar un módulo en php para una intranet, que extraiga unos datos de una db oracle y los coloque en mysql o posgress para manipularlos. > Mi problema es que el php del servidor que ocupo no tiene soporte para oracle. > > ¿alguien sabe como compilar php con soporte para oracle? ¿o algún manual/link donde leer esta info? > la ayuda "oficial" esta aca: http://www.oracle.com/technology/pub/notes/technote_php_instant.html pero podrias indicar que sistema operativo usas, que version de php, etc. en una de esas te podriamos ahorrar algunos pasos... ;) -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From jmvidal en sertotal.cl Fri Feb 17 15:13:20 2006 From: jmvidal en sertotal.cl (=?ISO-8859-1?Q?Jos=E9_Miguel_Vidal_Lavin?=) Date: Fri Feb 17 16:01:25 2006 Subject: PHP+Oracle In-Reply-To: <003901c633de$f6a850e0$310aa8c0@eecolkeber> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> Message-ID: <43F61240.30104@sertotal.cl> Keber Flores wrote: > Hola Lista > > Tengo que desarrollar un módulo en php para una intranet, que extraiga > unos datos de una db oracle y los coloque en mysql o posgress para > manipularlos. > Mi problema es que el php del servidor que ocupo no tiene soporte para > oracle. > > ¿alguien sabe como compilar php con soporte para oracle? ¿o algún > manual/link donde leer esta info? > > Gracias, > > Atte. > Keber Flores B. > programador que distro usas? si no tienes algun modulo de php para oracle podrias usar adodb u odbc. saludos From darkprox en gmail.com Fri Feb 17 16:27:21 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Fri Feb 17 21:48:57 2006 Subject: PHP+Oracle In-Reply-To: <43F61240.30104@sertotal.cl> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> <43F61240.30104@sertotal.cl> Message-ID: <43F62399.7060907@gmail.com> José Miguel Vidal Lavin wrote: > Keber Flores wrote: > >> Hola Lista >> >> Tengo que desarrollar un módulo en php para una intranet, que >> extraiga unos datos de una db oracle y los coloque en mysql o >> posgress para manipularlos. >> Mi problema es que el php del servidor que ocupo no tiene soporte >> para oracle. >> >> ¿alguien sabe como compilar php con soporte para oracle? ¿o algún >> manual/link donde leer esta info? >> >> Gracias, >> >> Atte. >> Keber Flores B. >> programador > > que distro usas? > si no tienes algun modulo de php para oracle podrias usar adodb u odbc. > > saludos > adodb (adodb.sourceforge.net) únicamente simplifica los pasos de trabajar con bases de datos, y el driver no tiene el mismo concepto que conocemos normalmente como driver. Si no está compilado el driver de PostgreSQL en PHP y se desea usar PostgreSQL, por ejemplo, es imposible que parta. Sólo queda ODBC. ;) From jmvidal en sertotal.cl Sat Feb 18 00:00:45 2006 From: jmvidal en sertotal.cl (Jose Miguel Vidal Lavin) Date: Sat Feb 18 00:30:20 2006 Subject: PHP+Oracle In-Reply-To: <43F62399.7060907@gmail.com> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> <43F61240.30104@sertotal.cl> <43F62399.7060907@gmail.com> Message-ID: <43F68DDD.9030604@sertotal.cl> Rodrigo Fuentealba wrote: > José Miguel Vidal Lavin wrote: > >> Keber Flores wrote: >> >>> Hola Lista >>> >>> Tengo que desarrollar un módulo en php para una intranet, que >>> extraiga unos datos de una db oracle y los coloque en mysql o >>> posgress para manipularlos. >>> Mi problema es que el php del servidor que ocupo no tiene soporte >>> para oracle. >>> >>> ¿alguien sabe como compilar php con soporte para oracle? ¿o algún >>> manual/link donde leer esta info? >>> >>> Gracias, >>> >>> Atte. >>> Keber Flores B. >>> programador >> >> >> que distro usas? >> si no tienes algun modulo de php para oracle podrias usar adodb u odbc. >> >> saludos >> > adodb (adodb.sourceforge.net) únicamente simplifica los pasos de > trabajar con bases de datos, y el driver no tiene el mismo concepto > que conocemos normalmente como driver. Si no está compilado el driver > de PostgreSQL en PHP y se desea usar PostgreSQL, por ejemplo, es > imposible que parta. > > Sólo queda ODBC. ;) > > postgre no tiene nada que ver aca pero el tema no es compilar cada cosa para usar ciertas caracteristicas sino usar las herramientas de cada distro que seria los modulos a cargar, si fuera slackware te creo porque ahi es compilar todo pero la mayoria de las demas distros hacen la compilacion por ti. saludos From darkprox en gmail.com Sat Feb 18 01:24:05 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Sat Feb 18 01:13:25 2006 Subject: PHP+Oracle In-Reply-To: <43F68DDD.9030604@sertotal.cl> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> <43F61240.30104@sertotal.cl> <43F62399.7060907@gmail.com> <43F68DDD.9030604@sertotal.cl> Message-ID: <43F6A165.6070703@gmail.com> Jose Miguel Vidal Lavin wrote: > Rodrigo Fuentealba wrote: >> adodb (adodb.sourceforge.net) únicamente simplifica los pasos de >> trabajar con bases de datos, y el driver no tiene el mismo concepto >> que conocemos normalmente como driver. Si no está compilado el driver >> de PostgreSQL en PHP y se desea usar PostgreSQL, por ejemplo, es >> imposible que parta. >> >> Sólo queda ODBC. ;) > postgre no tiene nada que ver aca Estimado, quise referirme a PostgreSQL solo porque es un driver que no siempre está disponible en las distribuciones (me ha pasado en Slackware y en dos más), y sólo para diferenciar lo que es un driver de ADODB de un driver de PHP para conectarse, pues el primero consume el segundo para cumplir con su objetivo. > pero el tema no es compilar cada cosa para usar ciertas > caracteristicas sino usar las herramientas de cada distro que seria > los modulos a cargar debian trae el package php4-postgresql o algo así, que puedes usar en vez de compilar. Lo mismo pasa con SuSE. Otras distribuciones, no tengo idea. > si fuera slackware te creo porque ahi es compilar todo pero la mayoria > de las demas distros hacen la compilacion por ti. Yo uso Slackware, y lo único que he necesitado compilar ha sido PHP. A pesar de que no es para nada recomendable usar third-party packages, yo tengo todo lo que necesito en seis o siete repositorios externos. Estoy demasiado acostumbrado a esto, y la verdad pido perdón a la lista por dar soluciones "a la slackware", que no siempre son lo más recomendable a seguir, por ser difíciles, pero en realidad funciona. > saludos Cordiales saludos. From jmvidal en sertotal.cl Sat Feb 18 02:52:00 2006 From: jmvidal en sertotal.cl (Jose Miguel Vidal Lavin) Date: Sat Feb 18 02:41:13 2006 Subject: PHP+Oracle In-Reply-To: <43F6A165.6070703@gmail.com> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> <43F61240.30104@sertotal.cl> <43F62399.7060907@gmail.com> <43F68DDD.9030604@sertotal.cl> <43F6A165.6070703@gmail.com> Message-ID: <43F6B600.7090208@sertotal.cl> Rodrigo Fuentealba wrote: > Jose Miguel Vidal Lavin wrote: > >> Rodrigo Fuentealba wrote: >> >>> adodb (adodb.sourceforge.net) únicamente simplifica los pasos de >>> trabajar con bases de datos, y el driver no tiene el mismo concepto >>> que conocemos normalmente como driver. Si no está compilado el >>> driver de PostgreSQL en PHP y se desea usar PostgreSQL, por ejemplo, >>> es imposible que parta. >>> >>> Sólo queda ODBC. ;) >> >> postgre no tiene nada que ver aca > > Estimado, quise referirme a PostgreSQL solo porque es un driver que no > siempre está disponible en las distribuciones (me ha pasado en > Slackware y en dos más), y sólo para diferenciar lo que es un driver > de ADODB de un driver de PHP para conectarse, pues el primero consume > el segundo para cumplir con su objetivo. > >> pero el tema no es compilar cada cosa para usar ciertas >> caracteristicas sino usar las herramientas de cada distro que seria >> los modulos a cargar > > debian trae el package php4-postgresql o algo así, que puedes usar en > vez de compilar. Lo mismo pasa con SuSE. Otras distribuciones, no > tengo idea. > >> si fuera slackware te creo porque ahi es compilar todo pero la >> mayoria de las demas distros hacen la compilacion por ti. > > Yo uso Slackware, y lo único que he necesitado compilar ha sido PHP. A > pesar de que no es para nada recomendable usar third-party packages, > yo tengo todo lo que necesito en seis o siete repositorios externos. > Estoy demasiado acostumbrado a esto, y la verdad pido perdón a la > lista por dar soluciones "a la slackware", que no siempre son lo más > recomendable a seguir, por ser difíciles, pero en realidad funciona. > >> saludos > > Cordiales saludos. > > bien aclarado todo el tema, sobre dar las disculpas por usar slackware no son para nada necesarias porque se que es una de las muy pocas distros puras (a lo sangre pura de vapiros jejejejej) asi que es un gran merito el tuyo asi que bien por eso. el tema principal que era conectar desde php a oracle y dando algunas soluciones creo que con todo el thread que se ha armado ya tendrá como hacerlo pa persona que hiso la consulta inicial, lo mio fueron ideas y ejemplos que lo mas probable no resulten el 100% efectivas pero sirven, no las he usado porque no me calza usar php+oracle. partamos por mis motis, si voy a usar una db como racle, gastar tanto recurso y morcalos y mas encima administrarlos con php es una tontera, y segundo, para que mesclar lo privado con lo publico, osea, software propietario con libre. saludos y ojalá no haga nada de ruido mi comentario porque es sano jajajajajajaa From darkprox en gmail.com Sat Feb 18 03:19:09 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Sat Feb 18 03:08:22 2006 Subject: PHP+Oracle In-Reply-To: <43F6B600.7090208@sertotal.cl> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> <43F61240.30104@sertotal.cl> <43F62399.7060907@gmail.com> <43F68DDD.9030604@sertotal.cl> <43F6A165.6070703@gmail.com> <43F6B600.7090208@sertotal.cl> Message-ID: <43F6BC5D.7040302@gmail.com> Estimados: [...] >> Yo uso Slackware, y lo único que he necesitado compilar ha sido PHP. >> A pesar de que no es para nada recomendable usar third-party >> packages, yo tengo todo lo que necesito en seis o siete repositorios >> externos. Estoy demasiado acostumbrado a esto, y la verdad pido >> perdón a la lista por dar soluciones "a la slackware", que no siempre >> son lo más recomendable a seguir, por ser difíciles, pero en realidad >> funciona. > bien aclarado todo el tema, sobre dar las disculpas por usar slackware > no son para nada necesarias porque se que es una de las muy pocas > distros puras (a lo sangre pura de vapiros jejejejej) asi que es un > gran merito el tuyo asi que bien por eso. Gracias por el concepto. > el tema principal que era conectar desde php a oracle y dando algunas > soluciones creo que con todo el thread que se ha armado ya tendrá como > hacerlo pa persona que hiso la consulta inicial, lo mio fueron ideas y > ejemplos que lo mas probable no resulten el 100% efectivas pero > sirven, no las he usado porque no me calza usar php+oracle. Pues, yo he visto trabajar el Servicio de Salud de Concepción con distintos sistemas, donde mezclan Visual Basic, PHP y otros, por un cuento de que allá imponen Oracle, así que esto se usa y más de lo que se podría imaginar. No hubo caso de echar a funcionar el driver oci8 de PHP (versión 4.3, eso fue hace ya tiempo atrás, PHP 5 estaba en boga aún). > partamos por mis motis, si voy a usar una db como racle, gastar tanto > recurso y morcalos y mas encima administrarlos con php es una tontera, > y segundo, para que mesclar lo privado con lo publico, osea, software > propietario con libre. Como una conclusión que puedo sacar, la mejor solución para tener portabilidad entre casi cualquier base de datos es usar ODBC. Fuera de modificar una que otra consulta y ralentizar algo el sistema, te permite tener la suficiente movilidad entre gestores de bases de datos, y si te cuesta un poco manejar bases de datos, es posible conectarte con Microsoft Access y tener un esquema visual de cómo está manejada usando el mismo control ODBC. Quizás es extraño que alguien que usa Slackware diga que se puede usar Access, y en particular yo me llevo muy poco con los MER y MR, me guío más por los scripts de creación de las bases de datos (el gusto por las cosas "complejas" me absorbe), pero este aporte va por el lado de dar una idea de la gran movilidad que se obtiene con implementar ODBC. > saludos y ojalá no haga nada de ruido mi comentario porque es sano > jajajajajajaa Lo que menos quiero hacer es polemizar la lista, siempre con la intención de ayudar y aprender más, ¿no? Cordiales saludos, Rodrigo. From keber en sictec.cl Sat Feb 18 12:48:26 2006 From: keber en sictec.cl (Keber Flores) Date: Sat Feb 18 11:40:13 2006 Subject: PHP+Oracle References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> <43F61240.30104@sertotal.cl><43F62399.7060907@gmail.com> <43F68DDD.9030604@sertotal.cl> Message-ID: <003f01c634a2$c1f038d0$0201a8c0@carcacha> Gracias a todos por sus respuestas, trataré de hacer funcionar la odbc. Sobre algunas preguntas/comentarios: El servidor donde está instalado el sistema con db oracle es un Centos, no estoy seguro la versión. El sistema donde está la intranet es un Fedora 2, y es en este server donde tengo que hacer funcionar el módulo que abra la conexión con oracle. Traté de usar adodb, y ahí me encontré con que el php que está instalado (php4) no tiene soporte para oracle, y según san google tendría que re-compilarlo. Cambiar de distros no es solución en este caso, el sistema grande -que usa oracle- es robusto y funciona bien; lo que tengo que hacer es una pequeña aplicación que permita a los usuarios de la intranet ver algunos datos de este sistema (monitoreo de estado). Además, tengo hasta el 28 de febrero para dejar esto funcionando (termina mi pega/empiezan las clases :P ) Les agradezco por su ayuda ;) atte. Keber Flores B. programador From darkprox en gmail.com Sat Feb 18 14:58:34 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Sat Feb 18 14:47:40 2006 Subject: PHP+Oracle In-Reply-To: <003f01c634a2$c1f038d0$0201a8c0@carcacha> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> <43F61240.30104@sertotal.cl><43F62399.7060907@gmail.com> <43F68DDD.9030604@sertotal.cl> <003f01c634a2$c1f038d0$0201a8c0@carcacha> Message-ID: <43F7604A.5060300@gmail.com> Keber Flores wrote: > Gracias a todos por sus respuestas, trataré de hacer funcionar la odbc. > > Sobre algunas preguntas/comentarios: > El servidor donde está instalado el sistema con db oracle es un Centos, no > estoy seguro la versión. El sistema donde está la intranet es un Fedora 2, y > es en este server donde tengo que hacer funcionar el módulo que abra la > conexión con oracle. > Para compilar el soporte de Oracle llamado oci8, tienes que tener las bibliotecas de Oracle instaladas en el mismo computador. > Traté de usar adodb, y ahí me encontré con que el php que está instalado > (php4) no tiene soporte para oracle, y según san google tendría que > re-compilarlo. > con php4 y adodb: $conexion = ADONewConnection('odbc'); $conexion->Open('192.168.0.1','username','password','db'); Cuando requieras obtener datos, lamentablemente no podrás utilizar el nombre de los campos, por ejemplo: "SELECT nombre, direccion, ciudad FROM usuario;". nombre tendrá que ser referenciado como [0] o como ['?nombre'] (algo asi?), direccion con 1 y ciudad con 2... así que te recomiendo evitar el uso de "SELECT *" para que no te pierdas. > Cambiar de distros no es solución en este caso, el sistema grande -que usa > oracle- es robusto y funciona bien; lo que tengo que hacer es una pequeña > aplicación que permita a los usuarios de la intranet ver algunos datos de > este sistema (monitoreo de estado). Por supuesto, al ser Linux siempre va a haber una forma o una solución. Hasta Slackware tiene soporte ODBC compilado, por lo que creo que te funcionará bien. > Además, tengo hasta el 28 de febrero para dejar esto funcionando (termina mi > pega/empiezan las clases :P ) > ¿clases? ¿quién dijo clases? nooooo!!! (odio tener que ir a clases...) > Les agradezco por su ayuda ;) > ;) > atte. > Keber Flores B. > programador Saludos Cordiales Rodrigo Fuentealba Cartes. From rmunoz en pjud.cl Mon Feb 20 09:33:05 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Mon Feb 20 10:09:53 2006 Subject: PHP+Oracle In-Reply-To: <003f01c634a2$c1f038d0$0201a8c0@carcacha> References: <003901c633de$f6a850e0$310aa8c0@eecolkeber> <43F61240.30104@sert otal.cl><43F62399.7060907@gmail.com><43F68DDD.9030604@sertotal.cl> <003f01c634a2$c1f038d0$0201a8c0@carcacha> Message-ID: <43F9B701.3020501@pjud.cl> Keber Flores escribió: > Gracias a todos por sus respuestas, trataré de hacer funcionar la odbc. > > Sobre algunas preguntas/comentarios: > El servidor donde está instalado el sistema con db oracle es un Centos, no > estoy seguro la versión. El sistema donde está la intranet es un Fedora 2, y > es en este server donde tengo que hacer funcionar el módulo que abra la > conexión con oracle. > hola, al parecer no revistaste el link de Oracle que te indique en un mail anterior. bueno, los pasos para habilitar PHP->Oracle en tu Fedora serian: 1. instalar el Oracle Instant Client, son un par de RPM, revisa el sitio de Oracle. 2. setear las variables de entorno de Oracle; ORACLE_HOME, ORACLE_BASE, etc. 3. bajar los fuentes del PHP desde http://mirror.psinet.cl/pub/fedora/2/SRPMS/php-4.3.4-11.src.rpm 4. compilar los RPM del PHP mediante: rpmbuild --define 'oracle 1' -ba php-4.3.4-11.src.rpm 5. ir al directorio /usr/src/redhat/RPMS e instalar el RPM php-oci8-4.3.4-11.rpm 6. reiniciar Apache y probar conexion a Oracle desde PHP. pd. el paso 1 *siempre* es necesario ya que en ninguna distro Linux se van a distribuir clientes propietarios. -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From b en guliv.cl Fri Feb 24 17:06:12 2006 From: b en guliv.cl (Boris Cruchet) Date: Tue Feb 28 12:31:46 2006 Subject: =?iso-8859-1?q?estra=F1o_problema?= Message-ID: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> tengo el siguiente codigo extrañamente siempre muestra LALALA en vez de lololo, alguien me puede explicar por que crestas "cero es igual a OK"!!!! saludos Boris Cruchet GULiV.cl From rmunoz en pjud.cl Tue Feb 28 12:47:10 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Tue Feb 28 12:45:50 2006 Subject: =?iso-8859-1?q?estra=F1o_problema?= In-Reply-To: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> References: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> Message-ID: <4404707E.5060506@pjud.cl> Boris Cruchet escribió: > tengo el siguiente codigo > > $resultado=0; > > if ($resultado=="ok") > { > echo "lalala "; > } > else > { > echo "lololo "; > } > ?> > > extrañamente siempre muestra LALALA en vez de lololo, > alguien me puede explicar por que crestas "cero es igual a OK"!!!! > revisa -> http://cl.php.net/manual/es/language.operators.comparison.php soluciones: a. dejar $resultado="0"; b. dejar if ($resultado==="ok") -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From rmunoz en pjud.cl Mon Feb 27 16:02:57 2006 From: rmunoz en pjud.cl (Ricardo Mun~oz A.) Date: Tue Feb 28 12:51:36 2006 Subject: frameworks MVC Message-ID: <44034CE1.4000105@pjud.cl> estimados, hace un tiempo se discutio el tema de los frameworks MVC, cual segun su experiencia es "mejor"?? estuve revisando las alternativas existentes[1] y me tinca alguno de los siguientes: - Zoop [2] - PHP on Trax [3] - Studs [4] - CakePHP [5] - Phrame [6] se ven todos muy similares (todos cumplen la misma funcion), y la unica diferencia que veo es que algunos estan basados en Struts otros en Ruby on Rails. cual recomiendan?? [1] http://www.phpwact.org/php/mvc_frameworks [2] http://zoopframework.com/ [3] http://phpontrax.com/ [4] http://www.mojavelinux.com/projects/studs/ [5] http://www.cakephp.org/ [6] https://www.phrame.org/ -- Ricardo Mun~oz A. Usuario Linux #182825 (counter.li.org) From b en guliv.cl Tue Feb 28 13:06:02 2006 From: b en guliv.cl (Boris Cruchet) Date: Tue Feb 28 14:14:34 2006 Subject: =?iso-8859-1?q?estra=F1o_problema?= In-Reply-To: <4404707E.5060506@pjud.cl> References: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> <4404707E.5060506@pjud.cl> Message-ID: <46570.200.2.117.206.1141142762.squirrel@200.2.117.206> ya habia probado con la opcion "a" muchas gracias! > revisa -> http://cl.php.net/manual/es/language.operators.comparison.php > > soluciones: > > a. dejar $resultado="0"; > b. dejar if ($resultado==="ok") > > -- > Ricardo Mun~oz A. > Usuario Linux #182825 (counter.li.org) > From pablo.cruz en gmail.com Mon Feb 27 22:12:23 2006 From: pablo.cruz en gmail.com (Pablo Cruz Navea) Date: Tue Feb 28 14:34:49 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: <43ED03A7.3090100@pjud.cl> Message-ID: <410da79f0602271712y50f608fh8cae301cf1074134@mail.gmail.com> On 2/10/06, JuanPa wrote: > Bueno listeros... nuevamente agradecerles toda su colaboracion. Ahora me ha > entrado el bicho de la curiosidad por todo en cuanto a procesos, conexiones, > acho de banda y todos esos chiches que antes no me importaban, sera mejor > que me ponga a investigar--- GOOGLE ahi voy. Siempre es bueno leer sobre el DBMS. Como dices tu, siempre hay chiches que se configuran y que te permiten tener mayor control del uso de ram, buffers, etc etc sin que la máquina muera inesperadamente. From darkprox en gmail.com Tue Feb 28 13:34:59 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Tue Feb 28 16:06:36 2006 Subject: =?iso-8859-1?q?estra=F1o_problema?= In-Reply-To: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> References: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> Message-ID: <44047BB3.9050300@gmail.com> Análisis de tu drama: > $resultado=0; > valor numérico. > if ($resultado=="ok") si el texto mencionado ahí es igual a el valor de mi variable $resultadi de tipo ###!!!>>>"OBJETO"<< { > echo "lalala "; > } > else > { > echo "lololo "; > } > ?> > Este es uno de los problemas que más hay que tener en cuenta en PHP, debido a que todas las variables se comportan de manera distinta según se les utilice como cadenas de texto o numéricas, por que PHP maneja todas las variables como objetos y las convierte al tipo de dato que necesite (alguna vez leí por ahí, no recuerdo el link). Cuando programas con esto, evita mezclar variables de tipos distintos y cuando inevitablemente tengas que hacerlo, utiliza floatval() para coma flotante, intval() para valores enteros, strval() para valores de cadena de texto y así otras cosas. No me mires No me mires No me No me No me mires déjalo ya... Mira ahora, Mira ahora, Mira Mira Mirame ya... (Mecano en la radio... odio esa canción pero es pegajosísima.) lo unico que haremos será ver si la variable $resultado convertida a string es igual al string "ok". Hasta hace un tiempo me resistía a programar en PHP por lo mismo, pero en la empresa me dijeron "no... hazlo en PHP" y donde manda capitán... > extrañamente siempre muestra LALALA en vez de lololo, > alguien me puede explicar por que crestas "cero es igual a OK"!!!! > > > saludos > Boris Cruchet > GULiV.cl From ruben.rhidalgo en gmail.com Tue Feb 28 16:52:09 2006 From: ruben.rhidalgo en gmail.com (=?iso-8859-15?Q?Rub=E9n_Hidalgo?=) Date: Tue Feb 28 16:47:54 2006 Subject: =?iso-8859-15?q?estra=F1o_problema?= In-Reply-To: <44047BB3.9050300@gmail.com> References: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> <44047BB3.9050300@gmail.com> Message-ID: Super Off Topic..! [...] > > No me mires No me mires No me No me No me mires déjalo ya... > Mira ahora, Mira ahora, Mira Mira Mirame ya... (Mecano en la radio... > odio esa canción pero es pegajosísima.) Jajajajaja.... :-D Lo lei dos veces ... la primera pense que era una demostración de codigo! ..jajaja. > References: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> <44047BB3.9050300@gmail.com> Message-ID: <210157710602281320m5a0b4d72y4f5affb47a8e9774@mail.gmail.com> On 2/28/06, Rubén Hidalgo wrote: Super Off Topic..! Por que OT? [...] > > > > No me mires No me mires No me No me No me mires déjalo ya... > > Mira ahora, Mira ahora, Mira Mira Mirame ya... (Mecano en la radio... > > odio esa canción pero es pegajosísima.) > > Jajajajaja.... :-D > Lo lei dos veces ... la primera pense que era una demostración de codigo! > ..jajaja. > > > [...] > ------------ próxima parte ------------ Se ha borrado un adjunto en formato HTML... URL: http://listas.inf.utfsm.cl/pipermail/php/attachments/20060228/fa31f892/attachment.html From pablo.cruz en gmail.com Mon Feb 27 22:10:09 2006 From: pablo.cruz en gmail.com (Pablo Cruz Navea) Date: Tue Feb 28 18:27:24 2006 Subject: Pool de conexiones en PHP In-Reply-To: References: <7eccce0d0602091211j75fbd143m91d84193deb0d72@mail.gmail.com> <43EBBBF3.9010907@gmail.com> Message-ID: <410da79f0602271710hbb78235u4207933ec2417942@mail.gmail.com> On 2/9/06, JuanPa wrote: > Gracias por sus respuestas listeros... > La verdad si me estoy complicando con mis tres capas... bien cabe decirlo > que es la primera vez que lo pongo en practica en PHP de forma practica. > Bien dicen por ahi, que 100 horas de teoria no valen un cacho sin una de > práctica. Es por eso que me estaba complicando con esto de las conexiones. > Quisiera que me aclaren un poco mas el concepto de conexion persistente y su > utilidad practica. > > 1.- Hasta donde sé las conexiones persistentes son aquellas a las que te > conectas, solamente si esta se abrió antes, en caso contrario se abriria una > nueva. Estando esta disponible para otra solicitud que se requiera. Claro, pero mueren si el programa cierra de forma inesperada. > 2.- Entonces ¿entiendo que (en aplicación PHP ) debería crear una sola > conexion ?? No necesariamente. Una página de inicio de sesión que requiere pasar una consulta (entendiendo que puede ser un string con varias consultas) no es necesario persistente. Así te ahorras el uso del close() respectivo. Ojo que el close() debes usarlo siempre que finalices una conexión persistente. > 3.- ¿Cuales son las ventajas entre utilizar un tipo de conexion persistente > o no persistente? Si vas a usar persistentemente una conexión usa persistente ;), sino usa no persistente. > Nuevamente les agradeceria... su colaboracion. :D > > > Juan Pablo From darkprox en gmail.com Tue Feb 28 13:33:57 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Tue Feb 28 20:33:34 2006 Subject: frameworks MVC In-Reply-To: <44034CE1.4000105@pjud.cl> References: <44034CE1.4000105@pjud.cl> Message-ID: <44047B75.7060703@gmail.com> Ricardo Mun~oz A. wrote: > estimados, > hace un tiempo se discutio el tema de los frameworks MVC, > cual segun su experiencia es "mejor"?? estuve revisando las > alternativas existentes[1] y me tinca alguno de los siguientes: > > - Zoop [2] > - PHP on Trax [3] > - Studs [4] > - CakePHP [5] > - Phrame [6] > > se ven todos muy similares (todos cumplen la misma > funcion), y la unica diferencia que veo es que algunos > estan basados en Struts otros en Ruby on Rails. > > cual recomiendan?? > > [1] http://www.phpwact.org/php/mvc_frameworks > [2] http://zoopframework.com/ > [3] http://phpontrax.com/ > [4] http://www.mojavelinux.com/projects/studs/ > [5] http://www.cakephp.org/ > [6] https://www.phrame.org/ > Según mi opinión, CakePHP se ve como el mejor... Me gustaría que vieras también el Symfony (http://www.symfony-project.org), que es preciso para cuando uno necesita mayor interacción como con Ajax. Además, Symfony se puede complementar mucho con PEAR. Atte. Rodrigo Fuentealba Cartes From darkprox en gmail.com Tue Feb 28 22:42:29 2006 From: darkprox en gmail.com (Rodrigo Fuentealba) Date: Tue Feb 28 22:37:35 2006 Subject: =?iso-8859-1?q?estra=F1o_problema?= In-Reply-To: <210157710602281320m5a0b4d72y4f5affb47a8e9774@mail.gmail.com> References: <58621.200.2.117.206.1140811572.squirrel@200.2.117.206> <44047BB3.9050300@gmail.com> <210157710602281320m5a0b4d72y4f5affb47a8e9774@mail.gmail.com> Message-ID: <4404FC05.1010902@gmail.com> Estimado Rubén: En vez de escribir "mira ahora este trozo de código", escribí la canción de mecano, ¿qué tiene de off topic? fue más off topic tu comentario y sería más off topic definir off topic <-! ok, mucho off-topiccismo, y no quiero comenzar un flame con esto. Espero que la explicación sobre el funcionamiento de las variables en PHP (que al final son como objetos) haya quedado clara. En un futuro intentaré no intercalar frases en mi correo, porque por lo visto hay gente a la que le desconcentra... eso pasa porque escribo siempre directamente lo que pienso y no lo redacto. Pido mil disculpas a los listeros a los que le haya afectado esto alguna vez. On 2/28/06, *Rubén Hidalgo* > wrote: > > Super Off Topic..! > > [...] > > > > No me mires No me mires No me No me No me mires déjalo ya... > > Mira ahora, Mira ahora, Mira Mira Mirame ya... (Mecano en la > radio... > > odio esa canción pero es pegajosísima.) > > Jajajajaja.... :-D > Lo lei dos veces ... la primera pense que era una demostración de > codigo! > ..jajaja. > > > [...] >