2012-03-21 26 views
34

Estoy usando PDO en mi aplicación PHP. Se conecta a un servidor MySQL en el mismo servidor:¿Por qué es lenta la construcción de conexión PDO?

$db = new PDO(mysql:host=localhost;dbname=test, $username, $password); 

creé dos páginas con la misma salida (sólo algunos datos ficticios en HTML plano) uno de los cuales contiene la llamada para crear DOP. Si abro la página que no usa conexión, la respuesta es entre 0.5 y 1 segundo más rápida.

+0

¿Cómo se obtienen datos de una base de datos sin conexión? – deceze

+0

Los datos ficticios son solo algunos HTML sin formato, nada de la base de datos. –

+1

Ese efecto no es normal. Parece que tienes problemas relacionados con el servidor. Tal vez SQL Server responde lentamente. Intenta investigar más, pero a mí esto me parece más un problema de ServerFault. –

Respuesta

77

He estado haciendo un poco de Google, y después de leer this thread, cambié localhost a 127.0.0.1. Eso resuelve el problema ...

+2

¡Hiciste mi día! Al usar localhost tardó un segundo para conectarse, usar 127.0.0.1 toma alrededor de un milisegundo. – CodeZombie

+1

Investigación muy útil. Traté de encontrar la solución por un tiempo hasta que esto me ayudó. Cayó de 1s a menos de 3ms. –

+8

Un poco de 'por qué': Al usar un nombre de host, PHP se ve obligado a hacer una búsqueda en la tabla de DNS (¡lento!). Si esta es una gran tabla, puede pasar mucho tiempo antes de que se encuentre la entrada. Al usar una dirección IP estática, puede omitir esta resolución por completo. ¡Incluso puede hacer esto en producción con IP's no locales! – Gerben

Cuestiones relacionadas