php – 当访问`/`时,Apache使用FallbackResource挂起五秒钟

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 当访问`/`时,Apache使用FallbackResource挂起五秒钟脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 PHP 5.4.21运行apache 2.4.6(amazon)的标准安装,使用以下配置为我的虚拟主机:
DirectoryIndex index.PHP
# ...
FallbackResource /index.PHP

我的index.PHP简单的缩影:

<?PHP echo "Hello world";

访问http://< server-name> /神秘地显示整页只有五秒钟!任何其他页面都有预期的响应时间(这很快).

我发现,这五秒钟与Keep-Alive功能认等待时间有关;在这种情况下,在Apache等待时间之后断开连接之前,不会发送分块响应的最后几个字节.顺便说一句,这也完全破坏了持久连接给你带来的任何好处.

这是Apache的已知错误还是我错过了一些非常明显的东西?

2017/04/18:这已在Apache 2.4.25: https://bz.apache.org/bugzilla/show_bug.cgi?id=58292中修复

this bug report开始,我意识到这个问题可能与DirectoryIndex指令有关.

标准apache安装在配置中附带以下部分:

<IfModule dir_module>
DirectoryIndex index.htML
</IfModule>

此语句后面的任何指令(例如虚拟主机中的指令)都不会覆盖此设置;相反,它会被添加到请求索引时将尝试的页面堆栈中.当您执行strace httpd -X并在读取请求后立即检查stat()调用时,可以确认此行为,例如:

stat("/path/to/vhost/index.html",0x7fff9dc41b90) = -1 ENOENT
stat("/path/to/vhost/index.PHP",{st_mode=S_IFREG|0664,st_size=130,...}) = 0

虽然我无法准确说明原因,但在指定DirectoryIndex index.PHP之前必须清除任何以前的DirectoryIndex指令,即index.PHP必须是尝试处理请求的第一个页面.

这可以使用以下配置完成:

DirectoryIndex disabled
DirectoryIndex index.PHP

脚本宝典总结

以上是脚本宝典为你收集整理的php – 当访问`/`时,Apache使用FallbackResource挂起五秒钟全部内容,希望文章能够帮你解决php – 当访问`/`时,Apache使用FallbackResource挂起五秒钟所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。