博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用fastcgi_finish_request提高页面响应速度
阅读量:6946 次
发布时间:2019-06-27

本文共 709 字,大约阅读时间需要 2 分钟。

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

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

 

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

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

 

 

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

末了给您提个醒,Yahoo在Best Practices for Speeding Up Your Web Site中提到了Flush the Buffer Early,也就是利用PHP中的flush方法把内容尽快发到客户端去,它和本文介绍的fastcgi_finish_request有些许的类似.

转载附言: 我看了下这个方法, 在调用的时候, 会发送响应, 关闭连接. 但是不会结束PHP的运行. 相比调用flush, 或者我之前介绍的来说, 这个方法能更加干脆一些.

另外, 从代码的可移植性讲的话, 可以在代码中附上如下代码:

if (!function_exists("fastcgi_finish_request")) {      function fastcgi_finish_request()  {      }}

 

不会造成代码部署在非fpm环境下造成问题.

你可能感兴趣的文章
Jenkins下载安装
查看>>
Spark:JavaRDD 转化为 Dataset<Row>的两种方案
查看>>
Chapter 5 Blood Type——8
查看>>
react-native 启动页(react-native-splash-screen)
查看>>
wpf 触摸屏 button 背景为null的 问题
查看>>
C# Task用法
查看>>
Javascript的console.log()用法
查看>>
node-packer
查看>>
FIR滤波原理及verilog设计
查看>>
Android Studio主题设置、颜色背景配置
查看>>
【转】linux在shell中获取时间 date巧用
查看>>
gprof使用介绍【转】
查看>>
多标签分类
查看>>
【netcore基础】MVC API全局异常捕捉中间件ExceptionHandlerMiddleWare
查看>>
Python菜鸟快乐游戏编程_pygame(2)
查看>>
工作log
查看>>
SpringBoot系统列 2 - 配置文件,多环境配置(dev,qa,online)
查看>>
C# WPF MVVM QQ密码管家项目(8,完结篇:自动输入QQ号、密码)
查看>>
CentOS7 搭建FTP服务器
查看>>
Eureka多机高可用
查看>>