转:神奇的Fastcgi_Finish_Request
当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法。按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。
听起来可能有些茫然,我们通过几个例子来说明一下:
<?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有些许的类似,但本质上完全不同,别混淆了。
This entry was posted in Technical and tagged Performance, PHP by 老王. Bookmark the permalink.
转载于:https://www.cnblogs.com/dasn/articles/3309241.html
转:神奇的Fastcgi_Finish_Request相关推荐
- 一段神奇的c代码错误分析
源代码 #include <stdio.h>int main(int argc, char* argv[]) {int i = 0;int arr[3] = {0};printf(&quo ...
- python deque双端队列的神奇用法
python中的deque双端队列,类似list的任意一端都可实现较快的add和pop操作 from collections import dequed=deque(maxlen=20) for i ...
- 几行代码实现神奇移动的过渡动画
1.效果如图: 2.实现: 假设需求为如上图,点击ViewController01后,ViewController01上的两张图片,移动到ViewContoller02中,其实两个ViewContro ...
- Hudson神奇的环境变量
Hudson神奇的环境变量 http://blog.sina.com.cn/s/blog_798f21a00100z6zw.html 转载于:https://blog.51cto.com/mylove ...
- 神奇的输入 while(cin....)如何在遇见换行之后进入下一层循环读入
1 cin>>m>>n; 2 for(int i=1;i<=m;i++) { 4 int x=0; 5 char ch=' '; 6 while(ch!=10) //在遇 ...
- 【NOIP2015提高组Day1】 神奇的幻方
[问题描述] 幻方是一种很神奇的 N*N矩阵:它由数字1,2,3, - - ,N*N 构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在 ...
- 图片提取文字功能很神奇?Java几行代码搞定它!
欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/weixin_44671737/ article/details/110000864 摘要 近日浏 ...
- CVPR 2021:记一次神奇的 Rebuttal 经历
点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨信息门下遛狗@知乎(已授权) 来源丨https://zhuan ...
- 曾因「抢车位」出圈儿,神奇的Mask R-CNN了解一下?
来自:博文视点Broadview 自从深度学习被应用到计算机视觉领域,目标检测算法在短时间内有了很大的进步,甚至有人为了抢个车位用上了Mask R-CNN进行自动检测 能有这样的神仙操作,多亏了Mas ...
最新文章
- 分拆之后又有大动作,惠普的下一步怎么走?
- ajax.filter json过滤,$.ajax()的dataFilter方法
- 元素class属性中的空格
- spring boot 整合redis实现方法缓存
- 得意而忘乎形:谈葛水平的水墨画
- C#写的WebServices可运行于树莓派
- 滑动窗口--单调队列
- 口腔取模过程及注意事项_取模变形?教你三种方法,轻松防止取模变形!
- qpython获取手机gps_基于Python获取照片的GPS位置信息
- MySQL报错 Packet for query is too large,server向mysql发送的数据包大小超过mysql限制
- 数组在内存中存储方式
- k折交叉验证优缺点_K最近邻(KNN)算法
- OpenCV算子速查表(持续更新)
- python语言程序设计是干什么的-Python语言程序设计
- 爱迪德CA系统与NDS CA系统对比分析(一)
- java坦克大战爆炸效果_Java坦克大战 (五) 之产生敌方坦克和爆炸效果
- Oracle数据库、实例、用户、表空间、表之间的关系
- mysql biginteger java_java.math.BigInteger cannot be cast to java.lang.Integer以及mysql升级的问题...
- TensorFlow2 入门指南 | 06 TensorFLow2 高阶操作汇总
- 51单片机PS2键盘解码实验--C51源代码
热门文章
- 大数据之-Hadoop3.x_MapReduce_序列化概述---大数据之hadoop3.x工作笔记0094
- Dubbo学习笔记001---分布式服务调用_Dubbo简介_依赖zookeeper做为注册中心进行服务注册与发现
- JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询
- 杭电1495非常可乐
- 测量程序运行时间的几个函数
- 多核编程中伪共享问题(false sharing)
- java两个return_关于java:调用另一个方法时return语句不起作用
- 搜索引擎的那些事(多线程web遍历)
- 从汇编的眼光看C++(之泛型编程)
- Oracle10怎样调出左侧的表,excel2010菜单栏不见了!怎样在excel左侧显示导航