2013-06-10 2 views
0

Я использую XAMPP под управлением php 5.3 и mysql версии 5.5.27 для разработки на моей локальной машине.PDO Ошибка производительности

В течение долгого времени я заметил, что время загрузки страницы, набравшее 2-3-секундную метку, но считалось, что, поскольку я использовал удаленную базу данных MySQL для подключения к ней, была латентность этого соединения, добавляющая к времени загрузки.

Я недавно начал использовать локальную службу mysql, работающую на моей машине, и время загрузки страницы все еще постоянно превышает 1 секунду.

Я использовал профайлер xDebug вместе с WinCacheGrind, чтобы обнаружить, что строка return new PDO($dsn, $username, $password, $options); в файле Laravel4's Illuminate\Database\Connectors\Connector занимает в среднем 1,005ms для выполнения.

Мой вопрос заключается в следующем: Учитывая вышеизложенное, я предполагаю, что это PDO, вызывающий проблему; почему и как я могу это исправить?

спасибо.

ответ

2

Такое поведение описано в руководстве:

Если имя хоста установлено на «локальный», то соединение с сервером производится через сокет домена. Если PDO_MYSQL скомпилирован против libmysqlclient, тогда местоположение файла сокета находится в каталоге libmysqlclient, скомпилированном в местоположении. Если PDO_MYSQL скомпилирован против mysqlnd, сокет по умолчанию может быть установлен через параметр pdo_mysql.default_socket.

http://php.net/manual/en/ref.pdo-mysql.connection.php#refsect1-ref.pdo-mysql.connection-notes

0

Я не знаю почему, но изменение хоста в моей конфигурации laravel4 mysql от localhost до 127.0.0.1 просто решило проблему.

следующие работы :)

'mysql' => array(
    'driver' => 'mysql', 
    'host'  => '127.0.0.1', 
    'database' => 'laravel4', 
    'username' => 'laravel4', 
    'password' => 'laravel4', 
    'charset' => 'utf8', 
    'collation' => 'utf8_unicode_ci', 
    'prefix' => '', 
), 

Я всегда считал, что локальный = 127.0.0.1 и поэтому указанные выше изменения не должны быть сделаны какие-либо изменения.

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