2012-03-21 52 views
34

PHPアプリケーションでPDOを使用しています。これは、同じサーバー上のMySQLサーバに接続します。なぜPDO接続の構築が遅いのですか?

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

私はの一つはPDOを作成するための呼び出しが含まれているのと同じ出力(プレーンHTMLでちょうどいくつかのダミーデータ)との2つのページを作成しました。接続を使用しないページを開いた場合、応答は0.5〜1秒早くなります。

+0

どのように接続せずにデータベースからデータを取得しますか? – deceze

+0

ダミーデータは単純なHTMLであり、データベースからは何もありません。 –

+1

その効果は正常ではありません。サーバー関連の問題があるようです。たぶん、SQLサーバーの応答が遅いです。詳細を調べてみるが、これはServerFaultの問題のように思える。 –

答えて

77

私はいくつかのグーグルをしていて、this threadを読んだ後、localhost127.0.0.1に変更しました。それは問題を解決します....

+2

あなたは私の一日を作った! localhostを使用すると、127.0.0.1を使用して約1ミリ秒かかって接続するまでに1秒かかりました。 – CodeZombie

+1

非常に参考になった研究。私はこれが助けられるまで、解決策を見つけようとしました。 1秒から3ミリ秒未満に低下しました。 –

+8

ちょっとした「理由」:ホスト名を使用することによって、PHPはDNSテーブルで検索を強制されます(遅くなります)。これが大きなテーブルの場合、エントリが見つかるまでに時間がかかることがあります。静的IPアドレスを使用することで、この解決を完全にスキップできます。プロダクション環境でも、非ローカルホストのIPを使用することができます。 – Gerben

関連する問題