函数 fastcgi_finish_request 花费了大部分执行时间
Posted
技术标签:
【中文标题】函数 fastcgi_finish_request 花费了大部分执行时间【英文标题】:function fastcgi_finish_request cost most of the executing time 【发布时间】:2012-06-27 07:44:54 【问题描述】:我用 yii + php-fpm + nginx 建了一个站点。然后我试图用 xhprof 找到瓶颈。 xhprof 的结果表明,在某些请求(不是全部)中,函数 fastcgi_finish_request 花费了所有执行时间的 80% 以上。很奇怪。
Click to view the full graph output from xhprof
Click to view the form output from xhprof
我使用的版本是:
php:5.3.8
nginx:1.0.10
xhprof:从它的 github 源构建
为什么函数 fastcgi_finish_request 需要这么多时间?我应该如何避免这种情况?
【问题讨论】:
我们必须猜这个问题吗? 对不起,忘了显示我的问题:为什么函数 fastcgi_finish_request 会花费这么多时间以及如何避免这种情况?谢谢! CallLogFilter 组件是什么?那不是标准的 Yii 组件。那一定是某种类型的日志记录组件。尝试禁用它。 CallLogFilter中postFilter函数的第一行是fastcgi_finish_request(),在fastcgi_finish_request之后,我们把这个请求记录到一个日志文件中 【参考方案1】:来自 php-fpm.org 页面:
fastcgi_finish_request() 是一个 php 功能,可以停止响应 输出。 Web 服务器立即开始传输响应“缓慢而 可悲”到客户端,同时 php 可以做很多有用的事情 查询上下文中的事情,例如保存会话, 转换下载的视频,处理各种统计数据, 等等
我自己还没有使用fastcgi_finish_request()
,但是如果时间,服务器需要发回到目前为止所做的响应输出,在PHP脚本中算作该方法的“执行时间”;看起来很清楚,为什么这个功能“消耗”这么多时间,因为它取决于您的服务器和客户端网络连接(例如 ping)。
使用本地开发环境时执行时间会有所不同吗?
【讨论】:
以上是关于函数 fastcgi_finish_request 花费了大部分执行时间的主要内容,如果未能解决你的问题,请参考以下文章
PHP利用fastcgi_finish_request()函数实现异步操作,提高响应速度
利用fastcgi_finish_request()函数,提高页面响应速度
利用fastcgi_finish_request()函数,提高页面响应速度
Fastcgi_Finish_Request 提高页面响应速度