Pet*_*háč 69 php web-server latency apache-2.2
我正在为我的一个朋友开发一个小型 PHP 项目,并且我有一个用于本地开发的 WAMP 环境设置。我记得我的本地 Apache 2.2 立即响应的日子。唉,现在我从一个漫长的假期回来了,我发现他们的反应localhost
非常缓慢。
得到一个 300B 的 HTML 页面大约需要 5 秒钟。
当我查看任务管理器时,httpd
进程 (2) 使用了 0% 的 CPU,总体而言我的计算机没有负载(0-2% CPU 使用率)。
为什么延迟这么高?是否有任何 Apache 设置我可以调整以使其线程以更高的优先级运行?它似乎只是在提供响应之前睡觉。
ssh*_*how 65
对我来说,将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
Run Code Online (Sandbox Code Playgroud)
mic*_*lko 23
我有同样的问题。
在 hosts 文件中将 localhost 重定向设置为 127.0.0.1 没有帮助。优化 MySQL 服务器没有帮助(InnoDB -> MyISAM,在 my.ini 中更改了许多与缓存相关的指令)。
然后我使用 web webgrind 并将问题缩小到“new PDO(...)”调用。改变
mysql:host=localhost;dbname=dp-ui;charset=utf8
Run Code Online (Sandbox Code Playgroud)
到
mysql:host=127.0.0.1;dbname=dp-ui;charset=utf8
Run Code Online (Sandbox Code Playgroud)
在 dsn for PDO彻底解决了这个问题!页面加载时间从 3000 多毫秒到 16 毫秒。
但是我真的很困惑为什么主机文件中的“127.0.0.1 localhost”行没有帮助。
Pet*_*háč 21
问题出在 Apache 的主要设置文件中httpd.conf
。
我找到了这个:
可以通过三种方法设置 PHP 以在 Windows 上与 Apache 2.x 一起工作。您可以将 PHP 作为处理程序、作为 CGI 或在 FastCGI 下运行。 [来源]
所以我进入了 Apache 的设置,看看问题出在哪里:我将它设置为 CGI,而不是将它作为模块加载。这导致php-cgi.exe
每次我提出请求时都会启动和关闭。这减缓了我的localhost
发展。
我更改了设置以将 PHP 作为 Apache MODULE加载,现在一切正常。:)
为 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"
谢谢大家的努力。
小智 7
检查是否/etc/hosts
正确。像这样:
# hostname mobrglnx1 added to /etc/hosts by anaconda
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 *****
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 *******
Run Code Online (Sandbox Code Playgroud)
在这个地方****
给出你的主机名。
小智 7
我遇到了同样的问题,最后发现它来自两个事实:
http://myproject.local/
,因为我把线127.0.0.1 myproject.local
在/etc/hosts
出现问题.local
是因为tld 是为 Bonjour 服务保留的,这是自 Mac OS X Lion (10.7) 以来。
更改其他内容的 tld 解决了问题。
归档时间: |
|
查看次数: |
235508 次 |
最近记录: |