为什么本地主机的响应这么慢?

为什么本地主机的响应这么慢?

我正在为我的一个朋友做一个小小的 PHP 项目,我为本地开发设置了一个 WAMP 环境。我记得以前本地 Apache 2.2 的响应非常迅速。唉,现在我刚结束一个漫长的假期,我发现响应速度慢得localhost令人难以忍受。

处理一个 300B 的 HTML 页面大约需要 5 秒钟。

当我查看任务管理器时,httpd进程 (2) 占用了 0% 的 CPU,并且总体而言我的计算机没有负载(CPU 使用率为 0-2%)。

为什么延迟这么高?是否有任何 Apache 设置可以调整,以便使其线程以更高的优先级运行或类似操作?它似乎只是在提供响应之前处于休眠状态。

答案1

对我来说,设置ServerName属性httpd.conf修复了延迟(最坏的情况是延迟长达 10 秒):

# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
ServerName 127.0.0.1:80

答案2

我也遇到了同样的问题。

在 hosts 文件中将 localhost 重定向设置为 127.0.0.1 并没有帮助。优化 MySQL 服务器也没有帮助(InnoDB -> MyISAM,更改 my.ini 中许多与缓存相关的指令)。

然后我使用 web webgrind 并将问题缩小到“new PDO(...)”调用。更改

mysql:host=localhost;dbname=dp-ui;charset=utf8 

mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8

在 PDO 的 dsn 中彻底解决了问题! 页面加载时间从 3000 毫秒减少到 16 毫秒

但是我真的很困惑为什么 hosts 文件中的“127.0.0.1 localhost”行没有帮助。

答案3

该问题出在 Apache 的主设置文件中httpd.conf

我找到了这个:

有三种方法可以在 Windows 上设置 PHP 与 Apache 2.x 配合使用。您可以将 PHP 作为处理程序、CGI 或在 FastCGI 下运行。 [来源]

于是我进入 Apache 的设置,查看问题所在:我将其设置为 CGI,而不是将其加载为模块。这导致php-cgi.exe每次我发出请求时都会启动和关闭。这减慢了我的localhost开发速度。

我更改了设置,将 PHP 作为 Apache 加载模块现在一切都运行正常。:)

要加载 Apache 2.x 的 PHP 模块:

1)将以下行插入到httpd.conf

LoadModule php5_module "c:/php/php5apache2.dll"

AddHandler application/x-httpd-php .php

(ps 更改C:/php为您的路径。另外,将 php5apache**.dll 更改为您现有的文件名)

2)要限制 PHP 仅对 .php 文件执行,请添加以下内容httpd.conf

<FilesMatch \.php$> SetHandler application/x-httpd-php </FilesMatch>

3)设置 php.ini 的路径httpd.conf(如果重启后出现错误,请再次删除此行)

PHPIniDir "C:/php"

谢谢大家的努力。

答案4

我遇到了同样的问题并最终发现它来自两个事实:

  1. 我使用 Mac OS X Mavericks
  2. 我通过 URL 访问了我的项目,http://myproject.local/因为我127.0.0.1 myproject.local/etc/hosts

出现该问题的原因是,.localtld 是为 Bonjour 服务保留的,从 Mac OS X Lion (10.7) 开始就存在这种情况。

将 tld 更改为其他内容即可解决问题。

相关内容