PHP在FastCGI模式时fastcgi_finish_request的妙用
来源:互联网 发布:php短网址源码 编辑:程序博客网 时间:2024/06/08 17:50
当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法。按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。
通过浏览器(不是命令行!)运行此脚本,结果发现并没有输出相应的字符串,但却生成了相应的文件。由此说明在调用fastcgi_finish_request后,客户端响应就已经结束,但与此同时服务端脚本却继续运行!
代码里用sleep模拟耗时的操作,浏览时没有被堵塞,程序却都执行了,具体看日志。
听起来可能有些茫然,我们通过几个例子来说明一下:
<?phpecho '例子:';fastcgi_finish_request();echo 'To be, or not to be, that is the question.';file_put_contents('log.txt', '生存还是毁灭,这是个问题。');?>
通过浏览器(不是命令行!)运行此脚本,结果发现并没有输出相应的字符串,但却生成了相应的文件。由此说明在调用fastcgi_finish_request后,客户端响应就已经结束,但与此同时服务端脚本却继续运行!
合理利用这个特性可以大大提升用户体验,趁热打铁再来一个例子:
<?phpecho '例子:';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有些许的类似,但本质上完全不同,别混淆了。(转自:http://qing.weibo.com/1657315521/62c8a0c1330029pm.html)
- PHP在FastCGI模式时fastcgi_finish_request的妙用
- 非fastcgi模式实现fastCGI模式的fastcgi_finish_request()
- 妙用php中的register_shutdown_function和fastcgi_finish_request
- 在IIS6 配置使用php的fastcgi模式
- php在apache中三种工作方式:CGI模式、FastCGI模式、Apache 模块DLL 的区别
- 13.妙用 register_shutdown_function和fastcgi_finish_request
- FastCGI模式安装php
- FastCGI模式安装php
- php在apache中安装模式的区别:fastcgi和mod_php
- php在apache中安装模式的区别:fastcgi和mod_php
- 在IIS 5.1 或IIS6 中配置PHP 的FastCGI模式
- php在apache中安装模式的区别:fastcgi和mod_php
- 在 IIS 6 中 fastcgi 模式运行 php 出现 No input file specified. 的解决
- php在apache中安装模式的区别:fastcgi和mod_php
- Discuz!X2.5 在FastCGI模式下php-cgi.exe进程数量增多的原因分析
- Linux+php在apache上以fastcgi模式运行
- Nginx fastcgi模式 配置 php
- php安装模式mod_php和Fastcgi的选择与对比
- 题目4-7 斐波那契数列、跳台阶、矩形覆盖
- java中HashMap,LinkedHashMap,TreeMap,HashTable的区别
- 设置Ubuntu 12.04 Unity返回到经典Gnome桌面
- ajax对象数组传参方式
- NoSql对比与选型,应用场景分析
- PHP在FastCGI模式时fastcgi_finish_request的妙用
- 风的世界里有海的七滴泪水
- 用Jaxp包中的SAX技术对XML文件进行解析并完成对文件的读取操作.doc
- 心得5--XML编程(CRUD)--dom、sax解析案例分析
- 我的世界观(二)智能存在的意义
- 浏览器兼容性改造之为XML支持
- undefined reference to 'pthread_create' 问题解决
- CentOS6.3配置samba文件服务器
- java中多种方式读文件