我正在为我的一个朋友开发一个很小的 PHP 项目,并且我有一个用于本地开发的 WAMP 环境设置。我记得我的本地 Apache 2.2 立即响应的日子。唉,现在我从一个漫长的假期回来了,我发现反应localhost
慢得令人痛苦。
提供一个 300B 的 HTML 页面大约需要 5 秒。
当我查看任务管理器时,httpd
进程 (2) 正在使用 0% 的 CPU,并且我的计算机总体上没有处于负载状态(0-2% 的 CPU 使用率)。
为什么延迟这么高?有没有我可以调整的 Apache 设置,以使其线程以更高的优先级运行?似乎它只是在发出响应之前就睡着了。
对我来说,将
ServerName
属性设置为httpd.conf
固定延迟(最坏的情况下最长可达 10 秒):我有同样的问题。
在 hosts 文件中将 localhost 重定向设置为 127.0.0.1 没有帮助。优化 MySQL 服务器没有帮助(InnoDB -> MyISAM,在 my.ini 中更改了许多与缓存相关的指令)。
然后我使用 webgrind 并将问题缩小到“new PDO(...)”调用。改变
至
在 dsn for PDO 中完全解决了这个问题!页面加载时间从 3000 多毫秒变为 16 毫秒。
但是我真的很困惑为什么主机文件中的“127.0.0.1 localhost”行没有帮助。
问题出在 Apache 的主要设置文件
httpd.conf
上。我找到了这个:
所以我进入 Apache 的设置,发现问题出在哪里:我将它设置为 CGI,而不是作为模块加载它。这导致
php-cgi.exe
每次我提出请求时都会启动和关闭。这减缓了我的localhost
发展。我更改了设置以将 PHP 作为 Apache MODULE加载,现在一切正常。:)
谢谢大家的努力。
检查是否
/etc/hosts
正确。像这样:在这个地方
****
给出你的主机名。我遇到了同样的问题,最后发现它来自两个事实:
http://myproject.local/
了一行127.0.0.1 myproject.local
/etc/hosts
出现问题是因为
.local
tld 是为 Bonjour 服务保留的,而这从 Mac OS X Lion (10.7) 开始。将 tld 更改为其他内容可以解决问题。
在你
httpd.conf
一定要设置设置HostnameLookups Off
。万一它对任何人有帮助,我遇到了这个问题,归结为不正确的 DNS 查找。
服务器上的 DNS 服务器设置为
127.0.0.1
- 我将其更改为使用 Google 公共 DNS 服务器,这使其整个堆更快。这个问题有一个标签 apache-2.2,但是如果有人在Apache 2.4 + PHP 5.5 的 WAMP 上也受到这个邪恶问题的影响,那么下面关于 SO 的答案对我有用:
https://stackoverflow.com/a/18786773/260080