我创建了一个简单的PHP测试页面,它连接到MySQL数据库,选择一个int值,然后释放结果。该页面需要5秒或更长时间才能加载。我已经看过很多关于这个或类似问题的帖子,但没有解决这些问题。这是我得到的输出:
mysql_connect took 4.8948628902435 seconds
mysql_select_db 0.00073790550231934 seconds
mysql_query took 0.0013959407806396 seconds
mysql_free_result took 2.0980834960938E-5 seconds
正如您所看到的,连接时间太长而其他一切都很快。
仅供参考 - 我不做PHP所以在建议修复时可以像对待婴儿一样对待我。
<?php
$mtime = microtime();
$mtime = explode(' ', $mtime);
$mtime = $mtime[1] + $mtime[0];
$starttime = $mtime;
mysql_connect("the_ip||the_hostname", "the_username", "the_password");
$mtime = microtime();
$mtime = explode(" ", $mtime);
$mtime = $mtime[1] + $mtime[0];
$endtime = $mtime;
$totaltime = ($endtime - $starttime);
echo '<h2> mysql_connect took ' .$totaltime. ' seconds</h2>';
?>
跟踪路线是即时的: 顺便说一下,有问题的应用程序是MantisBT以及Wordpress。
1 2 ms <1 ms <1 ms 1.2.3.4
2 <1 ms <1 ms <1 ms MYSQL5 [5.6.7.8]
答案 0 :(得分:7)
要看的另一件事是“mysql_connect”,它可能会向您显示PHP很难解析(查找)mysql主机。您使用的是IP地址,localhost还是主机名? (当连接到php中的数据库时)如果是主机名,请尝试将IP添加到c:\ windows \ system32 \ drivers \ etc \ host
如果不起作用。 如果您的所有“事实”都是正确的,那么您的PHP脚本可能会出现问题。你可以发布它,这样我就可以看到你在运行什么?也发布mysql表信息,如“索引”等。
:)
答案 1 :(得分:3)
我遇到了类似的问题,PHP使用简单的select语句访问MySQL,但需要花费很长时间才能显示。
在另一个论坛的帮助下,这家伙建议我创建一个新网站并给它一个不同于80的端口,所以我做了,在IIS管理器中,在网站下,添加新网站并将其指向虚拟DIR,输入服务器192.168.2.2的IP地址,并为其提供端口82。
在防火墙中打开了端口82,从联网的XP机器上打开了进入浏览器192.168.2.2:82的端口,它很闪亮。第一次工作。
此外,在新网站的IIS管理器中,在输出缓存中,取消选中使用模式缓存,它允许页面运行并使用php页面输入数据。
回复有点迟了,但我想我会以任何方式分享它。
答案 2 :(得分:2)
你能试试这两个测试脚本吗? (注意microtime
更改 - 你正在做的事情是一个古老的PHP4黑客... 你没有使用PHP4,是吗?)
这个将测试MySQLi扩展,如果它可用:
<h1>MySQLi Test</h1>
<?php
$starttime = microtime(true);
$db = new mysqli("the_ip||the_hostname", "the_username", "the_password");
$endtime = microtime(true);
$totaltime = ($endtime - $starttime);
echo '<h2> mysqli_connect took ' .$totaltime. ' seconds</h2>';
这个测试PDO扩展,如果它可用:
<h1>PDO Test</h1>
<?php
$starttime = microtime(true);
$db = new PDO("mysql:host=host_or_ip", "the_username", "the_password");
$endtime = microtime(true);
$totaltime = ($endtime - $starttime);
echo '<h2>PDO took ' .$totaltime. ' seconds</h2>';
如果这些都经历了相同的延迟,那么我们知道它不仅仅是古代“mysql”扩展代码中的内容。