Foros del Web » Programando para Internet » PHP »

Una conexión con el servidor, es permanente??

Estas en el tema de Una conexión con el servidor, es permanente?? en el foro de PHP en Foros del Web. Tengo una duda. He hecho una primera conexión con el servidor y a una BD, almacenando el valor de la conexión en una variable global. ...
  #1 (permalink)  
Antiguo 05/05/2005, 03:20
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 18 años, 11 meses
Puntos: 1
Pregunta Una conexión con el servidor, es permanente??

Tengo una duda. He hecho una primera conexión con el servidor y a una BD, almacenando el valor de la conexión en una variable global. Si, tras validar user/password, quiero hacer otra consulta, para q me muestre una serie de campos de una tabla en pantalla, tengop q volver a establecer la conexión, o puedo usar la variable q me he creado en la priemra conexión?? Es q haciendo ésto último me da un error, pero no sé si es porq no lo he usado bien o porq no se puede hacer así.
  #2 (permalink)  
Antiguo 05/05/2005, 08:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Existen las conexiones persistentes (no sé que BD usas . .pero en general son del tipo):

mysql_pconnect()
www.php.net/mysql_pconnect

Pero, la "persistencia" de la conexión lo hace Mysql internamente en función del "cliente" que pidió la consulta y demás .. Cara a PHP debes igualmente realizar la conexión (mysql_connect() o mysql_pconnect()).

El caso es que será Mysql (si usas conexiones persistentes) el que decida si debe "autentificarse" nuevamente con ese usuario/contraseña o no ..

Recuerda que si bien las conexiones persistentes te ahorran ese tiempo de "negociación" del usuario/contraseña para la autentificación .. no son ilimitados el n° de conexiones de este tipo ..

Un saludo,

Última edición por Cluster; 05/05/2005 a las 09:31
  #3 (permalink)  
Antiguo 05/05/2005, 08:14
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
y yo que pensé q era www.php.net/mysql_pconnect
  #4 (permalink)  
Antiguo 05/05/2005, 09:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Ops .. pues me equivoqué .. al poner la "P" .. gracias Seppo.

Un saludo,
  #5 (permalink)  
Antiguo 05/05/2005, 09:52
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años
Puntos: 2
Hola

Para el caso que tu mencionas con mysql_connect() es suficiente, y de hecho esa conexion sera valida durante todo tu script, entonces algo como:

mysql_connect()

mysql_query(select User y Pass)

//codigo

mysql_query(........................)

//codigo

mysql_close()

Sera totalmente correcto, la conexion que abriste funcionara bien en ese script, algo importante es que aunque se piensa que la conexion muere al terminar el script porque en otro no puedes hacerlo de nuevo, siempre es importante cerrarlo, para asegurar que estas liberando memoria y que la conexion REALMENTE se cerro, nunca quieres tener conexiones abiertas que no estas usando. Las conexiones permanentes en mi opinion son mala opcion, 1 son limitadas, 2 siempre estan abiertas y resultan poco seguras porque existen siempre - cualquiera que la encuentre la puede usar, 3 consumen recursos constantemente aun cuando no las necesitas, 4 pueden provocar fugas de memoria.
  #6 (permalink)  
Antiguo 06/05/2005, 02:46
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 18 años, 11 meses
Puntos: 1
Brffff !!! No he entendido mucho de lo q habéis comentado... :( Llevo MUY poco tiempo con PHP...
Mi idea era guardar en una variable global el resultado de establecer la primera conexión con el servidor, esto es:

---conexion.php---
session_start();
$_SESSION['servconex'] = @mysql_connect("localhost", "root", "");

Y para conectarme a la BD:

---validar.php---
$bdconex = mysql_select_db("BD_INCIDENCIAS", $_SESSION['servconex']);
// Valido los campo user/password

Y de momento, esto último ya me da error.
Lo que quería saber es, si más tarde, en otro .php quiero hacer una consulta a la BD, para q me muestre ciertos datos, puedo volver a usar la variable global $_SESSION['servconex']??? Lo he intentado pero no me sale, así q si sé q se puede hacer, seguiré intentándolo, pero si no, pues no!!
Sería en un ejemplo así:

---listadoIncidencias---
$ssql = "SELECT * FROM INCIDENCIA ORDER BY PRIORIDAD DESC";
$rssql = mysql_query($ssql, $_SESSION['servconex']) or die(mysql_error());

Ésto último está en otro fichero distinto al de la conexión. ¿Puedo usar la misma conexión, usando la variable global?
  #7 (permalink)  
Antiguo 08/05/2005, 13:53
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 18 años, 11 meses
Puntos: 1
Nadie contesta?? :(
  #8 (permalink)  
Antiguo 08/05/2005, 15:50
 
Fecha de Ingreso: marzo-2005
Mensajes: 162
Antigüedad: 19 años, 1 mes
Puntos: 0
Si se puede...

Si deseas seguir utilizando la misma conexión en distintos archivos lo q yo t recomiendo s q en un solo archivo tengas el código de tu conexión algo como esto:

//Mi archivo de conexion.php
<?php
$bd_host = "localhost";
$bd_usuario = "root";
$bd_password = "";
$bd_base = "Mibasededatos";
mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base);
?>

//Mi otro archivo.php
<?php
require('conexion.php')
.
.
.
?>

Salu2
  #9 (permalink)  
Antiguo 08/05/2005, 23:48
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
En efecto... lo mejor es conectarse cada que vayas (y solo si vaz) a hechar mano de tu Base de Datos... y buena forma para no estar escribiendo en cada script las sentencias para conectarte, es lo que te menciona Ultra Violeta; crear un "archivo de conexión" y llamarlo cada que vayas a usarlo con include() ó require().

www.php.net/include
www.php.net/require

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #10 (permalink)  
Antiguo 09/05/2005, 09:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
No, .. por una sesión no puedes propagar un Identificador de conexión a una BD ..

Si que podrías como ya te han comentado .. usar conexiones persistentes y siempre tener tu código de conexión (persistente o no) en un archivo a parte que llames por un include() en todos tus scritps que requieran de BD). El motor de BD ya se encargará de "autentificar" o no si es necesario (si se perdió la conexión .. etc).

Un saludo,
  #11 (permalink)  
Antiguo 10/05/2005, 01:49
 
Fecha de Ingreso: mayo-2005
Mensajes: 510
Antigüedad: 18 años, 11 meses
Puntos: 1
ok, es q tenía esa duda y no sabía si hacía algo mal o (a parte de eso) es q simplemente no se podía hacer. Muchas gracias!!
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 05:10.