当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相关推荐

  1. 一段神奇的c代码错误分析

    源代码 #include <stdio.h>int main(int argc, char* argv[]) {int i = 0;int arr[3] = {0};printf(&quo ...

  2. python deque双端队列的神奇用法

    python中的deque双端队列,类似list的任意一端都可实现较快的add和pop操作 from collections import dequed=deque(maxlen=20) for i ...

  3. 几行代码实现神奇移动的过渡动画

    1.效果如图: 2.实现: 假设需求为如上图,点击ViewController01后,ViewController01上的两张图片,移动到ViewContoller02中,其实两个ViewContro ...

  4. Hudson神奇的环境变量

    Hudson神奇的环境变量 http://blog.sina.com.cn/s/blog_798f21a00100z6zw.html 转载于:https://blog.51cto.com/mylove ...

  5. 神奇的输入 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) //在遇 ...

  6. 【NOIP2015提高组Day1】 神奇的幻方

    [问题描述] 幻方是一种很神奇的 N*N矩阵:它由数字1,2,3, - - ,N*N 构成,且每行.每列及两条对角线上的数字之和都相同. 当N为奇数时,我们可以通过以下方法构建一个幻方: 首先将1写在 ...

  7. 图片提取文字功能很神奇?Java几行代码搞定它!

    欢迎关注方志朋的博客,回复"666"获面试宝典 来源:blog.csdn.net/weixin_44671737/ article/details/110000864 摘要 近日浏 ...

  8. CVPR 2021:记一次神奇的 Rebuttal 经历

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 作者丨信息门下遛狗@知乎(已授权) 来源丨https://zhuan ...

  9. 曾因「抢车位」出圈儿,神奇的Mask R-CNN了解一下?

    来自:博文视点Broadview 自从深度学习被应用到计算机视觉领域,目标检测算法在短时间内有了很大的进步,甚至有人为了抢个车位用上了Mask R-CNN进行自动检测 能有这样的神仙操作,多亏了Mas ...

最新文章

  1. 分拆之后又有大动作,惠普的下一步怎么走?
  2. ajax.filter json过滤,$.ajax()的dataFilter方法
  3. 元素class属性中的空格
  4. spring boot 整合redis实现方法缓存
  5. 得意而忘乎形:谈葛水平的水墨画
  6. C#写的WebServices可运行于树莓派
  7. 滑动窗口--单调队列
  8. 口腔取模过程及注意事项_取模变形?教你三种方法,轻松防止取模变形!
  9. qpython获取手机gps_基于Python获取照片的GPS位置信息
  10. MySQL报错 Packet for query is too large,server向mysql发送的数据包大小超过mysql限制
  11. 数组在内存中存储方式
  12. k折交叉验证优缺点_K最近邻(KNN)算法
  13. OpenCV算子速查表(持续更新)
  14. python语言程序设计是干什么的-Python语言程序设计
  15. 爱迪德CA系统与NDS CA系统对比分析(一)
  16. java坦克大战爆炸效果_Java坦克大战 (五) 之产生敌方坦克和爆炸效果
  17. Oracle数据库、实例、用户、表空间、表之间的关系
  18. mysql biginteger java_java.math.BigInteger cannot be cast to java.lang.Integer以及mysql升级的问题...
  19. TensorFlow2 入门指南 | 06 TensorFLow2 高阶操作汇总
  20. 51单片机PS2键盘解码实验--C51源代码

热门文章

  1. 大数据之-Hadoop3.x_MapReduce_序列化概述---大数据之hadoop3.x工作笔记0094
  2. Dubbo学习笔记001---分布式服务调用_Dubbo简介_依赖zookeeper做为注册中心进行服务注册与发现
  3. JPA学习笔记---JPA数据的操作:增加,删除,修改,获取,使用JPQL进行查询
  4. 杭电1495非常可乐
  5. 测量程序运行时间的几个函数
  6. 多核编程中伪共享问题(false sharing)
  7. java两个return_关于java:调用另一个方法时return语句不起作用
  8. 搜索引擎的那些事(多线程web遍历)
  9. 从汇编的眼光看C++(之泛型编程)
  10. Oracle10怎样调出左侧的表,excel2010菜单栏不见了!怎样在excel左侧显示导航