浏览器正在等待symfony主页的最大保持活动时间。
如果我禁用Keepalive(apache),就可以了。接收到响应标头“ Connection: Close
”,浏览器停止等待。总时间接近200毫秒。
如果启用Keepalive(Apache),则标头响应为:
连接:保持活动状态
保持活动状态:超时= 5,最大= 500
传输编码:分块
没有'Content-Encoding
'标头
没有“ content-length
”标头(保持活动状态)
Php.ini:
output_buffering = 4096
我在远程服务器上使用php-fpm。这是apache的配置:
ProxyPassMatch ^ /(。 .php(/.)?)$ fcgi://192.168.1.1:9000 / var / php-fpm / www / public / $ 1
浏览器收到数据,但正在等待5秒。看来浏览器正在等待分块数据的结束(最后一个0大小的数据包)。
Web服务器是apache2.4.6,代码是php7.1.8 / synfony4。在开发环境中,相同的代码可以正常工作(另一台主机)。
apache日志中的执行时间接近20毫秒(不是5秒!)。浏览器等待传输结束,并因keepalive超时而停止。 如果我将Keepalive超时设置为20秒,则浏览器在接收到数据后会等待20秒。
Symfony性能指标“总执行时间”为18ms(在开发模式下)。 Internet Explorer时间轴(F12)在细节末尾显示5.35毫秒,其中“响应时间”为5秒。
如果我得到一个简单的页面(phpinfo),则没有问题,这与symfony主页有关,仅与生产服务器有关。
使用curl进行的简单测试(没有ajax,js ...)显示了问题:完全接收到数据(</html>
),但是curl仍在等待5秒并写入消息:
传输关闭,剩余未读数据
而不是:
与主机xxxxxxx完整连接的连接#0
如果我禁用ssl apache虚拟主机并使用Fiddler进行测试,则当我单击以解码响应正文时,Fiddler会显示此错误消息:
块状主体未正确终止为0大小的块
php / synfony是否存在php块问题?
非常感谢您。
答案 0 :(得分:0)
我已经解决了我的问题。 apache中的指令“ FallbackResource”会导致此“块”问题。此选项允许禁用AllowOverride和.htaccess用法,并要求Apache Web服务器将所有请求重定向到一个页面(不再需要DirectoryIndex)。但是,它似乎与索引页面的KeepAlive不兼容。我不知道这是否是Apache错误。