请选择 进入手机版 | 继续访问电脑版
设为首页收藏本站

php163

php163 首页 技术专栏 PHP 查看内容

神奇的Fastcgi_Finish_Request

2012-6-1 14:33| 发布者: php163| 查看: 2322| 评论: 1

摘要: 当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法。按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。 听起来可能有些 ...

当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法。按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。

听起来可能有些茫然,我们通过几个例子来说明一下:

<?php

echo '例子:';

fastcgi_finish_request();

echo 'To be, or not to be, that is the question.';

file_put_contents('log.txt', '生存还是毁灭,这是个问题。');

?>

通过浏览器(不是命令行!)运行此脚本,结果发现并没有输出相应的字符串,但却生成了相应的文件。由此说明在调用fastcgi_finish_request后,客户端响应就已经结束,但与此同时服务端脚本却继续运行!

合理利用这个特性可以大大提升用户体验,趁热打铁再来一个例子:

<?php

echo '例子:';

file_put_contents('log.txt', date('Y-m-d H:i:s') . " 上传视频\n", FILE_APPEND);

fastcgi_finish_request();

sleep(1);
file_put_contents('log.txt', date('Y-m-d H:i:s') . " 转换格式\n", FILE_APPEND);

sleep(1);
file_put_contents('log.txt', date('Y-m-d H:i:s') . " 提取图片\n", FILE_APPEND);

?>

代码里用sleep模拟一些耗时的操作,浏览时没有被堵塞,程序却都执行了,具体看日志。

末了给您提个醒,Yahoo在Best Practices for Speeding Up Your Web Site中提到了Flush the Buffer Early,也就是利用PHP中的flush方法把内容尽快发到客户端去,虽然表面上它和本文介绍的fastcgi_finish_request有些许的类似,但本质上完全不同,别混淆了。


鲜花

握手

雷人

路过

鸡蛋

收藏 分享
发表评论

最新评论

引用 thunder3721 2013-4-22 17:51
出售足球篮球信息网站程序,专业ipad应用开发,网站建设,手机网站-xixi11.com

QQ:260930006
联系电话:18923235141 陈生
网站:http://xixi11.com http://ttx.net.cn

ipad应用开发,
网站建设,
手机网站,
网站推广,
空间服务

我们的案例:萨米特陶瓷网,中山公交系统,陶瓷ipad展示系统,手机网站,足球资讯网,商城网站,公司网站


出售各类网站

佛山IT工作室-佛山

本工作室成员长期从事网站建设及网站优化的工作,六年的行业经验,技术成熟,开发的网站稳定可靠,价格合理。成员能日语和英语交流.

专业做仿站,复杂的平台网站,IPad应用,商务电子网站,地图站。

查看全部评论(1)

QQ:24940422 2698114111 电话:0532-89993080|Archiver|手机版|php163开源技术分享社区   

GMT+8, 2017-12-19 00:44 , Processed in 0.031125 second(s), 18 queries .

Powered by Discuz!

PHP开源技术分享门户

回顶部