Ver Mensaje Individual
  #6  
Antiguo 21-10-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.108
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Bien. No creo que interese mantener la conexión "activa". No lo digo con mucho conocimiento de causa, pero, para tratar con bases de datos MySQL, el proyecto WordPress, Menéame, y yo mismo... he usado siempre una adaptación de la clase ezSQL de Justin Vincent. Esto es así porque una vez que conoces esta clase ya no quieres otra cosa...

Mi adaptación de la clase la adjunto a continuación. Puede que te cueste entrarle, pero, como le llegues a entrar, te aseguro que no querrás otra cosa: al menos a mí me parece que es estupenda, vaya. Mira de bajarte la clase original para estudiarla, pero, como me parece que esta ha "crecido" bastante... echa un vistazo también a "mi adaptación", que te adjunto. (Si tienes algún problema avisa).

Pero, en fin, a lo que íbamos... no creo que merezca la pena mantener la conexión, entre otras cosas, por el gasto que pueda conllevar. Personalmente, ya digo, uso la clase que adjunto para comunicar con bases de datos MySQL. Precisamente, una de las variables globales de mi sistema guarda una instancia de dicha clase, mejor dicho, de una que deriva de ella, pero, para el caso es lo mismo.

Y el caso es que al inicio de mi sistema se requieren los archivos necesarios y se instancia dicha clase en una variable global. Mientras se van requiriendo archivos no es preciso hacer más: la variable global mantiene la instancia de la clase, con la conexión a la base de datos, de modo que puede uno usarla sin preocuparse de más.

Y, cuando "rediriges" a otro Script... dicho Script sí o sí ha de requerir el archivo donde se declara la variable global y se "construye" la clase (es en el constructor de la clase que se realiza la conexión a la base de datos). Pero, ya digo... proyectos como WordPress, Menéame y algunos que yo he llevado a cabo, más humildemente, no necesitan mantener la conexión a la base de datos hasta el punto que dices.

De todos modos, lo mismo que existe "mysql_connect()", existe también "mysql_pconnect()": la "p" es de "permanent", y se diferencia de "mysql_connect()", según la ayuda:

Cita:
Primero, durante la conexión, la función intenta primero encontrar un enlace persistente abierto con el mismo host, usuario y password. Si lo encuentra, devuelve el identificador de enlace en lugar de abrir otra conexión.

Segundo, la conexión no será cerrada cuando acabe la ejecución del script. El enlace permanecerá abierta para ser usado en el futuro (mysql_close() no cierra el enlace establecido con mysql_pconnect()).
Quiero decir que, efectivamente, existe la posibilidad de mantener una conexión con la base de datos de forma permanente, y digo yo (en mi ignorancia) que de algo habrá de servir... Pero, francamente, nunca me he visto en la necesidad de usarla, y, casi estoy por asegurar que tú tampoco lo necesitas para lo que pretendes hacer.

Así que lo dicho: una clase que se conecta con la base de datos, la selecciona y permite trabajar con ella... no tiene porqué "persistir" entre sesiones, sino que basta conque se "instancie" y haga su trabajo cada vez que esto sea necesario. Yo vengo funcionando así... WordPress... Menéame... también (de Menéame no estoy al cien por cien seguro porque hace tiempo que no miro su código), así que... tal vez tú tampoco necesites otra cosa.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 02-05-2008 a las 15:55:19.
Responder Con Cita