Foros del Web » Programando para Internet » PHP »

Conexiones a BD y sesiones

Estas en el tema de Conexiones a BD y sesiones en el foro de PHP en Foros del Web. Hola a todos. Estoy empezando con el PHP y ando liado con un mantenimiento simple de base de datos (insertar, modificar, borrar y consultar) El ...
  #1 (permalink)  
Antiguo 19/08/2004, 05:31
 
Fecha de Ingreso: agosto-2004
Mensajes: 51
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Conexiones a BD y sesiones

Hola a todos.

Estoy empezando con el PHP y ando liado con un mantenimiento simple de base de datos (insertar, modificar, borrar y consultar) El caso es que tengo una página para cada una de esas acciones y un fichero (conex.php) en el que establezco la conexión con la BD. Por ahora la única manera de que me funcione es llamando a conex.php en cada una de las páginas, con lo que, que yo sepa, abro una conexión nueva con la BD. He intentado guardar la conexión haciendo :

Código PHP:
session_start();
$conexion=mysql_connect(....);
$_SESSION['conexion']=$conexion

y luego usando $_SESSION['conexion'] en el resto de páginas, pero así no me funciona. Buscando por el foro he leído que no se puede guardar una (¿objeto?) conexión como variable de sesión....

La pregunta es la siguiente ¿Hay alguna manera de abrir una sola conexión con la BD y usarla en todas las páginas?

Muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 19/08/2004, 08:13
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
No, eso no puedes hacerlo ... propagar en una sesión un "link" (resource) de una conexión a tu BD en una sesión.

Como mucho si quieres puedes usar conexiones persistentes y dejar (que para eso está) a tu BD que gestione que "cliente" ha iniciado ya una sesión bajo la BD y continue con ella si ya está abierta:

mysql_pconnect()
www.php.net/mysql_pconnect

Cita:
Por ahora la única manera de que me funcione es llamando a conex.php en cada una de las páginas,
Aunque uses conexiones persistentes .. igualmente debes incluir tu código e conexión (mysql_pconnect() .. ) en todos tus scripts .. Será Mysql (tu motor de BD usando en este caso) el que decida si el link de conexión sigue activo o se perdió y en consecuencia realizar la nueva conexión de forma "transparente" para tu aplicación.

También recuerda que hay cierto nº de límite de conexiones persistentes a una BD y esto consume un extra de recursos del servidor si realmente no es necesario.

Lo que ganas con una conexión persistente a una BD suele ser el tiempo de negociación del "usuario/password" (y la própia conexión a Mysql) .. pues sólo se establece una vez por "cliente" y de ahí se sigue usando. Pero, .. en el caso típico de una conexión "localhost"; es decir .. que tu servidor Mysql y PHP están en el mismo servidor .. una conexión NO persistente frente a una persistente .. las diferencias son mínimas (tal vez "despreciables?" v/s recursos que se consumen del servidor). La conexión NO persistente .. conecta a tu BD .. hace las consultas que tengas que hacer y cierra la BD dejandola "inactiva" hasta la próxima consulta que pidas.

Un saludo,
  #3 (permalink)  
Antiguo 19/08/2004, 08:47
 
Fecha de Ingreso: agosto-2004
Mensajes: 51
Antigüedad: 13 años, 3 meses
Puntos: 0
Pues muchísimas gracias, Cluster. Llevaba unos cuantos días dándole vueltas a cómo evitar conectar a la BD cada vez que entraba en una página. En realidad era una cosa que se me había metido a mí en la cabeza. Creía que conectarme tantas veces a la BD era poco eficiente, pero viendo que es así como funciona normalmente y que el motor de la BD es el que se encarga de gestionarlo, ya sé que no me tengo que preocupar.

Ya había leído algo sobre las conexiones persistentes, pero, como has dicho, parece que sólo valen para cosas muy específicas, pues consumen recursos del servidor. Para la "tontada" que estoy haciendo no merecen la pena.

Lo dicho, muchas gracias por "la lección" Un saludo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:26.