Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema con multiples conexiones

Estas en el tema de Problema con multiples conexiones en el foro de Mysql en Foros del Web. Buenas Maestros, poseo un problema, tengo un script en php con el que hago consultas a MySql similar a DataObject de PEAR, funciona así Código ...
  #1 (permalink)  
Antiguo 19/01/2011, 17:08
 
Fecha de Ingreso: febrero-2009
Mensajes: 20
Antigüedad: 15 años, 2 meses
Puntos: 0
Problema con multiples conexiones

Buenas Maestros, poseo un problema, tengo un script en php con el que hago consultas a MySql similar a DataObject de PEAR, funciona así
Código PHP:
$DB DB::Loader('tabla');
$DB->Consulta('consutla aqui');
$DB->Free(); 
Bueno la primera linea realiza la conexión, la segunda ejecuta y la ultima cierra la conexión, osea que por cada objeto DB que se crea abro una conexion, todo bien con eso, pero haciendo una prueba intente sacar todos los registros de una tabla y por cada uno hacer otra consulta, iba así

Código PHP:
foreach($datos as $clave => $valor){
$DB DB::Loader('tabla');
$DB->Consulta('consutla aqui');
$DB->Free();

Resulta que al llegar a los 4000 se colapso mi MySql. ahora mi pregunta es

¿Mejor una sola conexión para todas consultas de mysql y matarla al footer de la pagina o varias conexiones que nacen y mueren cuando terminan su función?

Y otra duda, ¿Qué diferencia hay en la conexion tradicional de mysql_connect() en PHP y
mysql://usuario:password@localhost/base_de_datos?

Estoy usando Mysqli...

Última edición por jugokus; 19/01/2011 a las 17:30
  #2 (permalink)  
Antiguo 21/01/2011, 07:16
 
Fecha de Ingreso: febrero-2009
Mensajes: 20
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problema con multiples conexiones

¿Alguien que me ayude?
  #3 (permalink)  
Antiguo 21/01/2011, 07:40
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Problema con multiples conexiones

Es un error de programación: Hacer un loop donde se abren y cierran conexiones a la base es una pésima práctica, ya que los recursos de las conexiones no se liberan realmente con tanta rapidez, y eventualmente el pool de conexiones se satura.
Tanto en Windows como en el host donde se encuentre el servidor, las conexiones tardan en desaparecer del pool; además, los webhosting no te dan acceso a conexiones en forma infinita, porque eso consume recursos.
¿Nunca escuchaste hablar de los ataques por denegación de servicios (DoS)? Bueno, precisamente eso es lo que estás haciendo en una escala pequeña... como cada conexión se declara en el sistema como proveniente de un user a través de una conexión, y las anteriores no están efectivamente liberadas, bueno, el sistema colapsa.
Este tipo de técnicas recibe el nombre de SYN FLood e ICMP Flood.

Lo que debes hacer es abrir una sola conexión por sesión y realizar todas las consultas con ella. No abrir secuencialmente conexiones. En todo caso lo que debes liberar son los recursos de la consulta.

Cita:
Y otra duda, ¿Qué diferencia hay en la conexion tradicional de mysql_connect() en PHP y
mysql://usuario:password@localhost/base_de_datos?
Esos son temas de implementación de librerías, programación de conectores.
Además, ¿a qué te refieres con "mysql://usuario:password@localhost/base_de_datos"? ¿A la conexión por consola?
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 21/01/2011 a las 07:46
  #4 (permalink)  
Antiguo 21/01/2011, 17:23
 
Fecha de Ingreso: febrero-2009
Mensajes: 20
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Problema con multiples conexiones

Cita:
Además, ¿a qué te refieres con "mysql://usuario:password@localhost/base_de_datos"? ¿A la conexión por consola?
No lo sé, la librería DataObject de PEAR (PHP) usa ese string de conexión, y no el típico mysql_connect(), pero veo que eso ya es tema de PHP, solo me causo curiosidad si era que existía otra forma de conectarse a mysql desde ambiente web con php

Gracias por tu atención, ya me quedo claro que es una mala practica lo que estaba haciendo.


Saludos

Etiquetas: conexion
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 22:53.