XAMPPを新規インストールしました。PHPMyAdminを最初に開いたとき、非常に遅いことがわかりました。ローカルホストでは、すべてのページを開くのに約5秒かかるとは意味がありませんでした。PHPMyAdminのせいにするために、小さなテストケースを作成しました。
$con = new PDO("mysql:host=localhost;dbname=mysql", "root", "");
$statement = $con->query('SELECT host,user,password FROM user;');
$users = $statement->fetchAll(PDO::FETCH_ASSOC);
上記のスクリプトは、実行に約3秒かかります(ただし、最初に実行したときに読み込むのに8秒近くかかりました)。
次に、PDOの障害かどうかを確認するために、mysql_connect
代わりに使用してみました。
$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);
$result = mysql_query('SELECT host,user,password FROM user;');
終了するのに丁度時間がかかります。
最初はPHPのせいだと思っていましたが、PHPコードと静的ファイルは、更新をクリックするよりも早く提供されます。この小さなスクリプトを実行してPHPをテストしました。
header("Content-Type: text/plain");
for($i = 0; $i < 5000; $i++)
{
echo sha1(rand()) . "\n";
}
5000のsha1
計算とページは、ウィンドウを更新できるよりもずっと速く表示されます。
それから、MySQLのせいだと思った。しかし、繰り返しますが、MySQLが必要以上に高速に動作していることを理解するために多くのテストをしませんでした。MySQL CLIクライアントを使用すると、ユーザー選択クエリは測定可能な時間もかかりません。リターンキーを離す前に完了します。
問題はPHPのMySQLへの接続であるに違いありません-それは私が推論できる限りです。PHPが遅い、またはMySQLが遅いということはたくさんありますが、PHP + MySQLが極端に遅いということはありません。
これを解決できる人に感謝します!
win32にXAMPP 1.8.0を使用しています(ダウンロードリンク)
PHPバージョン:5.4.4
MySQLバージョン:14.14
編集:タイミングをとると、接続機能が非常に時間がかかっていることがわかります:
$time = microtime(true);
$con = mysql_connect("localhost", "root", "");
mysql_select_db("mysql", $con);
$con_time = microtime(true);
$result = mysql_query('SELECT host,user,password FROM user;');
$sel_time = microtime(true);
printf("Connect time: %f\nQuery time: %f\n",
$con_time-$time,
$sel_time-$con_time);
出力:
接続時間:1.006148 クエリ時間:0.000247
PHPがデータベースへの接続に多くの時間を費やす原因は何ですか?CLIクライアント、HeidiSQLおよびMySQLワークベンチは即座に接続します