Foros del Web » Programando para Internet » PHP »

PHP OO Problema lentitud conexión con base SQL

Estas en el tema de Problema lentitud conexión con base SQL en el foro de PHP en Foros del Web. Hola!, estoy conectado a una base de datos SQL SERVER 2008 por sqlsrv usando la interfaz PDO. Hay un problema que me sucede cada tanto, ...
  #1 (permalink)  
Antiguo 29/12/2014, 13:14
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 8 años, 10 meses
Puntos: 9
Problema lentitud conexión con base SQL

Hola!, estoy conectado a una base de datos SQL SERVER 2008 por sqlsrv usando la interfaz PDO.

Hay un problema que me sucede cada tanto, cuando hago la primer consulta del dia. Siempre se termina cancelando por timeout, entonces pruebo haciendo la misma consulta desde SQL managment y esta se ejecuta sin inconvenientes. Vuelvo al script php a realizar la misma consulta de antes, y compruebo que ahora se ejecuta al instante cuando antes esperaba un minuto y se cancelaba por timeout.

Puede ser este problema a causa de la primera conexion a la base, por alguna razon se demora demasiado, y cuando me conecto desde SQL managment abro una conexion para que despues el script php use esa conexion?

Gracias por cualquier ayuda!
__________________
Los mejores juegos de PC gratis en ******
  #2 (permalink)  
Antiguo 02/01/2015, 07:46
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 8 años, 10 meses
Puntos: 9
Respuesta: Problema lentitud conexión con base SQL

Como aclaración, me estoy conectando a una base de datos remota.
__________________
Los mejores juegos de PC gratis en ******
  #3 (permalink)  
Antiguo 03/01/2015, 07:46
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 1
Respuesta: Problema lentitud conexión con base SQL

Yo tuve el mismo problema, pero con mysql

El problema y/o la solución parece insospechado pero creo que se trata de algun error de encaminamiento de IP, es decir intentas acceder al servidor atraves de su nombre de maquina, para confirmar esto debes intentar acceder atravez de su IP y si la demora no se produce entonces estas ante algun problema de ruteo o de resolución de nombre de dominio. Suerte con tu problemilla.
  #4 (permalink)  
Antiguo 06/01/2015, 09:22
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 8 años, 10 meses
Puntos: 9
Respuesta: Problema lentitud conexión con base SQL

Cita:
Iniciado por orodrf Ver Mensaje
Yo tuve el mismo problema, pero con mysql

El problema y/o la solución parece insospechado pero creo que se trata de algun error de encaminamiento de IP, es decir intentas acceder al servidor atraves de su nombre de maquina, para confirmar esto debes intentar acceder atravez de su IP y si la demora no se produce entonces estas ante algun problema de ruteo o de resolución de nombre de dominio. Suerte con tu problemilla.
Muy buen comentario, ya hice el cambio. Voy a esperar un par de dias haber si mejora la velocidad de conexion. Gracias!
__________________
Los mejores juegos de PC gratis en ******
  #5 (permalink)  
Antiguo 07/01/2015, 12:06
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 8 años, 10 meses
Puntos: 9
Respuesta: Problema lentitud conexión con base SQL

Luego de hacer los cambios y probarlo durante 2 dias, los problemas persisten :(

Sigue cortando la ejecución del script por timeout.
__________________
Los mejores juegos de PC gratis en ******
  #6 (permalink)  
Antiguo 12/01/2015, 13:17
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 8 años, 10 meses
Puntos: 9
Respuesta: Problema lentitud conexión con base SQL

El script que uso para abrir la conexion es el siguiente:

Código PHP:
Ver original
  1. $this->activeConnections[$name] = new PDO(
  2.               self::$connections[$name]['dsn'],
  3.               self::$connections[$name]['username'],
  4.               self::$connections[$name]['password'],
  5.               $options
  6.             );
  7.             $this->activeConnections[$name]->fetch_mode = PDO::FETCH_OBJ;
  8.             $this->activeConnections[$name]->setAttribute(PDO::ATTR_PERSISTENT, true); 
  9.             $this->activeConnections[$name]->setAttribute(PDO::ATTR_DRIVER_NAME , PDO::SQLSRV_TXN_READ_UNCOMMITTED);
  10.             $this->activeConnections[$name]->setAttribute(PDO::ATTR_TIMEOUT, 50);
  11.             $this->activeConnections[$name]->setAttribute(PDO::SQLSRV_ATTR_QUERY_TIMEOUT, 50);
  12.             $this->activeConnections[$name]->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
__________________
Los mejores juegos de PC gratis en ******
  #7 (permalink)  
Antiguo 16/01/2015, 12:43
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 8 años, 10 meses
Puntos: 9
Respuesta: Problema lentitud conexión con base SQL

A nadie le paso nada parecido?
__________________
Los mejores juegos de PC gratis en ******
  #8 (permalink)  
Antiguo 16/01/2015, 15:26
 
Fecha de Ingreso: enero-2010
Mensajes: 491
Antigüedad: 10 años, 1 mes
Puntos: 12
Respuesta: Problema lentitud conexión con base SQL

Probaste usando el mismo código en un servidor local?

Creo que el problema está en la conexión via internet al servidor, correpondería analizar los modems, la calidad del servicio, Spams de cada lado etc.
  #9 (permalink)  
Antiguo 17/01/2015, 06:42
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 1
Respuesta: Problema lentitud conexión con base SQL

Podría ser eventualmente lo que dice wilmer30, pero segun tus comentarios el timeout te lo hace la primera y por unica vez y este tipo de fallos no es comun en los ruters, modems etc, a mi me sucedia en una LAN con mysql y foxpro la primera conexion demoraba algo asi como 30a50 segundos y las subsiguientes sin demora (server linux,cliente-windows), y busque un monton hasta que di con algo llamado skip name resolution que ya ni recuerdo como se editaba el archivo de configuracion del mysql y santo remedio, y esto segun entiendo fue causado por una mala configuración en mi servidor la parte de DNS e IPs, es dificil la solucion porque se desconoce del entorno de tu server es mas ni siquiera se sabe si cuentas con acceso fisico a el, pero podrías probar primero mapear la IP de tu servidor a tu maquina como DNS (esto se complica si tiene IP dinamica), es decir agregarlo a tus DNS en la configuracion de tu RED, como te dije creo que es un problema de resolucion de nombre de maquina y/o ruteo, jamas utilice SQLserver y desconozco si cuenta con alguna configuracion de skip_name_resolution, por eso te recomiendo que des mayor información sobre el entorno de tu sistema y quizas alguien pueda darte la solución.

Suerte
  #10 (permalink)  
Antiguo 21/01/2015, 08:13
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 8 años, 10 meses
Puntos: 9
Respuesta: Problema lentitud conexión con base SQL

Muchas gracias por las respuestas,

Comento que no es un problema de DNS, ya que estoy accediendo directamente a la IP del servdor remoto. El server es LINUX, y el cliente desde donde me conecto es WINDOWS.
__________________
Los mejores juegos de PC gratis en ******
  #11 (permalink)  
Antiguo 21/01/2015, 08:24
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 11 años, 10 meses
Puntos: 326
Respuesta: Problema lentitud conexión con base SQL

¿La consulta produce el timeout O la conexión?

;)
__________________
>> Eleazan's Source
>> @Eleazan
  #12 (permalink)  
Antiguo 21/01/2015, 09:17
Avatar de hackcrack  
Fecha de Ingreso: abril-2011
Mensajes: 331
Antigüedad: 8 años, 10 meses
Puntos: 9
Respuesta: Problema lentitud conexión con base SQL

La conexion se realiza, porque no da error. El error de timeout aparece cuando hago la consulta.
__________________
Los mejores juegos de PC gratis en ******
  #13 (permalink)  
Antiguo 21/01/2015, 11:18
 
Fecha de Ingreso: enero-2015
Mensajes: 35
Antigüedad: 5 años, 1 mes
Puntos: 1
Respuesta: Problema lentitud conexión con base SQL

Me supongo que tu entorno debe ser asi, un servidor c/PHP(linux) que accede remotamente a PC WINDOWS c/SQL SERVER, porque hasta donde se SQL SERVER no corre en linux.

Yo haría la siguiente prueba desde un terminal windows (sin involucrar a tu servidor linux c/PHP ni al SQL SERVER) mediante ODBC crearía una conexion y mediría el tiempo de respuesta de la primera conexion al siguiente dia utilizando la IP del SQL SERVER para accederla. (prueba de conexion)

Luego podrías probar alguna consulta mediante libreoffice o cualquier otro programa (existen cientos de clientes SQL PORTABLES inclusive), configurarlo para que se conecte via ODBC utilizando la conexion que ya probaste para tratar de ejecutar una consulta a una tabla y medir el tiempo de respuesta.(prueba de consulta)

Esto se traduce en que: si persiste la demora el problema esta en SQL SERVER, si no el problema podría estar en tu SERVER c/PHP.

Ojala descubras el problema.

Etiquetas: lentitud, sql
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 10:34.