我刚刚重新安装了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变慢的事实。
感谢任何可以帮助我解决此问题的人!
我正在将XAMPP 1.8.0用于Win32(下载链接)
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工作台立即连接