Windows 7上Apache运行非常缓慢

6

最简单的脚本:

<?php echo 'hello';

大约需要3秒钟才能执行。Apache似乎等待很长时间才能提供网页服务。
我尝试关闭防病毒软件、禁用ipv6等,但Apache仍然非常慢。我该怎么办?
编辑:
附加信息:
- Apache 2.2 - PHP 5.2 - 只有动态PHP文件。静态文件(html)可以立即提供服务。 - 它与系统规格无关,这是一台新电脑。
Apache错误日志中有一些PHP注意事项:
[Thu Jul 01 08:37:21 2010] [error] [client 127.0.0.1] PHP Notice:  Undefined variable: ref in D:\\data\\o\\WebProjects\\elearning\\application\\modules\\clientarea\\controllers\\ViewController.php on line 578, referer: http://elearning/clientarea/view/course/teid/1/cid/1

你的系统配置是什么?你正在使用哪个浏览器和版本? - mcandre
你正在运行哪些版本的Apache和PHP? - Mark Baker
在虚拟机上安装LAMP堆栈并进行测试!(尝试重新安装Wampstack,也许安装过程中出了一些问题?) - Redlab
1
你有检查过Apache错误日志吗? - Powerlord
@R. Bemrose:只有几个 PHP 注意事项,我已经在我的问题中包含了它们。 - Richard Knop
显示剩余3条评论
7个回答

14

通常认为此问题是由防火墙干扰或启用网络接口的IPv6引起的,但这些解决方案对我没有起作用。事实证明,默认情况下Windows 7的hosts文件位于“C:\Windows\System32\drivers\etc\hosts”,而该文件中的此行已被注释:

# 127.0.0.1 localhost
在我的情况下,只需取消注释这一行,就可以将本地主机的性能恢复到应有水平,而不是每次加载页面都要等待3-5秒钟。请记住,您需要以管理员权限运行文本编辑器才能编辑 hosts 文件。

建议将::1这一行也注释掉。这是微软的一个真正遗憾,抱歉这么说。现在由于这个愚蠢的事情,我的互联网连接比以前更快了。 - Codebeat

5

我有同样的问题。修改host文件并不能提高页面加载速度。经过多小时的搜索,我终于找到了解决方案。

我修改了httpd.conf文件,将监听地址绑定到一个IP地址而不是所有可用接口:

#Listen 80
Listen 127.0.0.1:80

现在所有网页都可以瞬间加载,而不是需要大约10秒钟的时间。
希望这能有所帮助。
编辑:实际上这并没有解决问题,仍然会出现随机缓慢的情况。我不得不承认,最终我将我的Web服务器迁移到了一个Linux虚拟机上,从此再也没有观察到任何缓慢的响应时间。

3

我正在使用Laravel框架,对我而言有效的方法是在php.ini文件中更改指令realpath_cache_size = 1M。这将加载时间从3秒减少到半秒!

realpath_cache_size = 1M


0
唯一帮助我的事情是在网络适配器的IPv4参数中取消选中“在DNS中注册此连接的地址”框,DNS设置下的按钮 -> 下面两个复选框。

0
在我的情况下,默认情况下,标准文档根目录 C:\PathToApache\htdocs 与本地网络上的其他用户共享。通过禁用该目录的共享,我大大提高了 Apache 的性能。现在每个请求都只需要一眨眼的时间。
希望这能帮助所有未来的读者。

0

纯粹是为了帮助那些在Windows上遇到Apache速度慢的困扰的人,我通过在C:\Windows\System32\drivers\etc\hosts文件中注释掉::1 localhost并添加127.0.0.1 127.0.0.1来解决了这个问题。

我发现我不得不不断重新加载Windows服务中的Apache,因为我的网站会逐渐变得越来越慢。

Apache的htdocs文件夹没有共享,修改httpd.conf中的Listen ...行似乎没有起作用,而且我已经在C:\Windows\System32\drivers\etc\hosts文件中有了127.0.0.1 localhost这一行,但是::1 localhost这一行就在它的下面。

正如@Erwinus在顶部帖子的评论中建议的那样,我注释掉了那一行,并从this post中添加了127.0.0.1 127.0.0.1这一行。服务器响应时间似乎大大提高了。


-11
使用任务管理器结束不必要的进程。
顺便提一下,你应该用?>结束你的脚本。

4
一个结尾的 ?> 是不必要的(虽然有些人可能会争论它是否是良好的实践),如果在 ?> 后面有空格,有时会导致问题。因此,我更倾向于不使用它。 - Mark Baker
10
不想成为“那些人”之一,但是省略掉 ?> 是可以接受的,而且实际上被许多编码标准推荐。首先,它确保没有尾随空格将输出推送到头部之前。 - Narcissus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接