2012-03-21 2 views
34

Я использую PDO в своем приложении PHP. Он подключается к серверу MySQL на одном сервере:Почему медленное соединение PDO?

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

Я создал две страницы с тем же выходом (только некоторые фиктивные данные в виде простого HTML) один из которых содержит призыв к созданию PDO. Если я открою страницу, которая не использует соединение, ответ будет между 0,5 и 1 секундой быстрее.

+0

Как вы получаете данные из базы данных без подключения? – deceze

+0

Фиктивные данные - это всего лишь простой HTML-код, ничего из базы данных. –

+1

Этот эффект не является нормальным. Похоже, у вас проблемы с сервером. Возможно, SQL-сервер медленно реагирует. Попытайтесь исследовать больше, но для меня это больше похоже на проблему ServerFault. –

ответ

77

Я занимаюсь поиском в Интернете, и после прочтения this thread, я изменил localhost на 127.0.0.1. Это решает проблему ....

+2

Вы сделали мой день! Используя localhost, потребовалось целую секунду для соединения, используя 127.0.0.1 требуется около одной миллисекунды. – CodeZombie

+1

Очень полезное исследование. Я пытался найти решение, пока это не помогло. Выпадало от 1 до менее 3 мс. –

+8

Немного «почему»: используя имя хоста, PHP вынужден выполнять поиск в таблице DNS (медленно!). Если это большая таблица, это может занять много времени, прежде чем запись будет найдена. Используя статический IP-адрес, вы можете полностью отказаться от этого разрешения. Вы даже можете сделать это в производстве с не-localhost IP! – Gerben

Смежные вопросы