【发布时间】:2011-06-05 01:58:42
【问题描述】:
其实有点复杂:
总结:与数据库的连接很慢。
页面渲染大约需要 10 秒,但页面上的最后一条语句是回显,当页面在 firefox 中加载时我可以看到它的输出(IE 相同)。在谷歌浏览器中,输出仅在加载完成时才可见。不同浏览器的加载时间大致相同。
在调试时,我发现它的数据库连接造成了问题。数据库在另一台机器上。进一步调试。我在本地机器上部署了数据库..所以现在数据库连接在 127.0.0.1 但连接仍然需要很长时间。
这意味着问题出在 APACHE/PHP 而不是 mysql。但后来我将我的代码部署在另一台远程连接到数据库的机器上。一切似乎都很好。
基本上,该应用程序使用了几个 mod_rewrite.. 但我删除了所有 .htaccess 文件,仍然存在连接缓慢的问题..
我在我的机器上安装了另一个 APACHE 并使用了默认设置。连接仍然很慢。
我添加了以下语句来测量执行时间
$stime = microtime();
$stime = explode(" ",$stime);
$stime = $stime[1] + $stime[0];
// my code -- it involves connection to DB
$mtime = microtime();
$mtime = explode(" ",$mtime);
$mtime = $mtime[1] + $mtime[0];
$totaltime = ($mtime - $stime);
echo $totaltime;
输出为 0.0631899833679
但 firebug Net 面板显示总加载时间为 10-11 秒。谷歌浏览器也是如此
我试图关闭 Windows 防火墙.. 连接仍然很慢
我只是找不到原因.. 我尝试了多个数据库服务器.. 多个 apache.. 似乎没有任何工作.. 知道可能是什么问题吗?
[编辑]
请浏览 cmets 部分了解更多详情。实际上,我认为我正在接近获得解决方案。基本上我正在开发我自己的框架,其中包括通过 .htaccess 文件重写 url。我添加了一些 css 和 js 文件,我注意到这些文件被发送了多个请求,没有充分的理由(在 firefox 中)。我认为这个问题与 CONTENT-LENGTH 标头有些相关,因为 firefox 没有收到此标头,因此它一直在等待内容(并且可能会出现超时).. 它与 Transfer-Encoding:chunked 有什么关系吗?
【问题讨论】:
-
您能提供该页面的链接吗?你确定不是图像\css\js 有问题吗,你能用上面的代码来计算整个页面的加载时间吗,从最开始的时候开始,在最后结束。
-
只是一个注释;
microtime(true)将数字作为带有 µsecs 的浮点数返回,因此您可以避免加法。 -
是的,它不是图像、css 或 js.. 我从页面中删除了所有内容.. 它只有 2 个回显语句.. 一个回显执行时间,另一个回显从 db 中选择的记录
-
该页面在我的机器上。所以我不能提供任何直接链接
-
由于缓存,这可能是测试查询时间的不好方法。您可能会发现连续多次运行相同的代码会导致不同的结果。
标签: php mysql apache database-connection