Conexiones MySQL Persistentes ?

Iniciado por Diabliyo, 20 Mayo 2016, 03:44 AM

0 Miembros y 1 Visitante están viendo este tema.

Diabliyo

Buenas...

Tengo un sitio en el cual estoy recibiendo algo de trafico y anteriormente mi forma de manejar las conexiones a MySQL tenian el procedimiento asi:

1) El script de conecta a la BDD.
2) Realiza la consulta (select, insert, update, etc...).
3) Cerraba la conexión.
4) Retornaba el resultado de la consulta.

Esto ahora veo me esta matando :'(... despues de cierto rato, noto que se alenta el sitio :'(, reinicio httpd y mysqld, y todo se normaliza.

Leyendo en internet encuentro con que se recomienda tener una conexion permanente y cerrar esta conexion cuando el usuario se vaya.

En mi caso, mi sitio es una plataforma que se muestra tras logearse, asi que intente esto (sin exito aun...).

funcion que conecta mysql
Código (php) [Seleccionar]
function conectar()
{
if( !($link= mysql_connect( "". SERVER. "", "". BASE_USR. "", "". BASE_PASS. "" )) )
$link= "ERROR";
else if( !mysql_select_db( "". BASE. "", $link ) )
$link= "ERROR";
return $link; # retornamos conexion
}


Logeo y Desloqueo
Código (php) [Seleccionar]
session_start();

# cuando el usuario se LOGEA
if( login($usuario, $pass) )
         {
         $_SESSION["log_id"]= get_datauser( "id", $user, $pass ); # nos da el ID
         $_SESSION["mysql"]= conectar_bdd(); # retorna el ID de conexion
         }
else # no se logeo con exito
         {
         unset($_SESSION);
         reloadpage( "/" ); # recarga pagina
         }

# cuando el usuario se DESLOGEA
if( !strcmp($_GET["log"], "out") )
         {
         mysql_close($_SESSION["mysql"]; # cerramos la conexion
         unset($_SESSION);
         session_destroy();
         }


Como se observa la variable $_SESSION["mysql"] la seteo con el ID de la conexión para ese usuario, pero resulta que dicha variable no guarda o nose que sucede, que despues en cierta parte de mi codigo cuando consulto la variable, tiene un valor 0 (cero).

Tal vez la manera en como quiero solucionarlo esta mal, estoy dispuesto en leer sus recomendaciones :D

OJO: ya lei sobre mysql_pconnect(), pero no quiero usarla porque ya esta marcada como obsoleto en php.net

Saludos !

engel lex

toda la entensión mysql está marcada como obsoleta, tienes que migrar a mysqli o pdo::mysql, si lees la advetencia de pconnect ahí te dice como hacer...

tu otra opción si tienes espacio de de disco y hosting es guardar la consulta en caché (si es la misma consulta repetidas veces)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

Diabliyo

Cita de: engel lex en 20 Mayo 2016, 04:58 AM
toda la entensión mysql está marcada como obsoleta, tienes que migrar a mysqli o pdo::mysql, si lees la advetencia de pconnect ahí te dice como hacer...

tu otra opción si tienes espacio de de disco y hosting es guardar la consulta en caché (si es la misma consulta repetidas veces)

Gracias engel lex por tus comentarios.

Si digamos me chute toda la recodificacion para cambiar de mysql a mysqli, y ya tenga todo listo y funcionando con mysqli mi preguntas son:

1) Cuando haga una consulta y antes haga una conexion, sera necesario llamar a la desconexion ?
2) Si NO llamo a la desconexion, pero al consultar esta por defecto manda llamar una conexion, la existente se retomaria ?
3) Es recomendable configurar las variables de "mysqli_max_persistent" y "mysqli_max_links" ???

OJO actualmente (como uso mysql), cada que termino una consulta, mando llamar: mysql_close(). Pero ahorita que tengo mas usuarios conectados y haciendo consultas, ya siento que el server llega a un punto donde se alenta :'(

Saludos !