В настоящее время я пишу PHP-приложение, и я заметил, что моя страница загружается любопытно медленно. Я занимаю около 2 секунд (точнее, 2.0515811443329).Подключение базы данных базы данных (PDO)
Я выяснил, что такое узкое место, и это та часть, где я создаю соединение PDO с моей базой данных MySQL.
Метод «connect()» не содержит никаких экзотических материалов. Это просто выглядит следующим образом:
public function connect ($database, $host, $username, $password)
{
try
{
$this->db = new \PDO("mysql:dbname=".$database.";host=".$host, $username, $password);
if (!$this->db)
{
throw new \Exception('Failed to connect to the database!');
}
$this->db->setAttribute(\PDO::ATTR_ERRMODE, \PDO::ERRMODE_EXCEPTION);
}
catch (\Exception $e)
{
echo '<strong>Exception: </strong>'.$e->getMessage();
return false;
}
return true;
}
Так что, когда я закомментировать вызов метода «подключения()», то мои загрузки страницы в: 0.035506010055542
Это огромная разница. Я могу себе представить, что создание соединения с базой данных занимает некоторое время, но занимает больше 1,5 секунд ... Я не уверен, что это нормально?
Если это нормально, это занимает такое количество времени, то есть способ сохранить соединение с базой данных? Как положить его на сеанс? На самом деле, насколько я знаю, сохранение его в сеансе невозможно. Но это было бы идеальным решением. Хранение соединения где-нибудь, пока пользователь не закроет свой браузер.
В любом случае, существует ли проблема с моим PDO/MySQL? И я могу как-то сохранить ресурс подключения? Так что мне не нужно повторно подключаться к моей базе данных каждый раз для каждой новой страницы?
PS. Я делаю все это на локальном хосте (Windows).
С каким хостом вы подключаетесь? Если это удаленный хост по TCP, вы можете получить медленный поиск DNS или что-то в этом роде –
@Michael, я думаю, я редактировал свой пост в то время, когда вы это писали. Я добавил его в конце своего сообщения. Localhost и Windows. – w00
Есть ли соединение с localhost также занимает много времени, если вы просто используете командную строку 'mysql -u username -p password'? –