>> 处理web端页面的时候,往往会遇到一个问题,就是 ajax 请求 php 代码后,由于 php 代码执行时间过长,导致页面等待响应时间过长,此时我们可以想办法让 php 提前返回响应,然后再继续执行其他处理。 ### 方法 - [fastcgi_finish_request](http://www.php.net/manual/zh/function.fastcgi-finish-request.php "fastcgi_finish_request"),官方解释:此函数冲刷(flush)所有响应的数据给客户端并结束请求。 这使得客户端结束连接后,需要大量时间运行的任务能够继续运行。 - [register_shutdown_function](http://php.net/manual/zh/function.register-shutdown-function.php "register_shutdown_function"),官方解释:注册一个 callback ,它会在脚本执行完成或者 exit() 后被调用。 - [__destruct](http://www.php.net/__destruct "__destruct"),官方解释:析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。 ### 测试代码 index.html ```html PHP TEST 请求 fastcgi_finish_request.php 请求 register_shutdown_function.php 请求 destruct.php ``` success.php ```php result(); ``` ### 测试结果 - fastcgi_finish_request 函数结果 ![fastcgi_finish_request 函数结果](http://oss.wangyd.com/article/d8450ec0d70c503859cfd85ea6cf0efb.png "fastcgi_finish_request 函数结果") - register_shutdown_function 函数结果 ![register_shutdown_function 函数结果](http://oss.wangyd.com/article/e21105068600ac579b30c06b8463cfb3.png "register_shutdown_function 函数结果") - __destruct 函数结果 ![__destruct 函数结果 ](http://oss.wangyd.com/article/dfa15888b667ca65a1df5a750238fe3b.png "__destruct 函数结果 ") ### 结果分析 从上面执行图片可以看出,每个然后都可以实现此功能,这样基本需求是可以实现的;如果有更深层次的需求,需要对比几个函数之间的差异来做后面的选择和优化。