zoukankan      html  css  js  c++  java
  • 使用fastcgi_finish_request提高页面响应速度

    PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.

    按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法.

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

        <?php
         
        echo '例子:';
        fastcgi_finish_request(); /* 响应完成, 关闭连接 */
         
        /* 记录日志 */
        file_put_contents('log.txt', '生存还是毁灭,这是个问题.');
        ?>

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

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

        <?php
         
        echo '例子:';
         
        file_put_contents('log.txt', date('Y-m-d H:i:s') . " 上传视频 ", FILE_APPEND);
         
        fastcgi_finish_request();
         
        sleep(1);
        file_put_contents('log.txt', date('Y-m-d H:i:s') . " 转换格式 ", FILE_APPEND);
         
        sleep(1);
        file_put_contents('log.txt', date('Y-m-d H:i:s') . " 提取图片 ", FILE_APPEND);
         
        ?>

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

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

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

  • 相关阅读:
    MySQL-基本sql命令
    Java for LeetCode 203 Remove Linked List Elements
    Java for LeetCode 202 Happy Number
    Java for LeetCode 201 Bitwise AND of Numbers Range
    Java for LeetCode 200 Number of Islands
    Java for LeetCode 199 Binary Tree Right Side View
    Java for LeetCode 198 House Robber
    Java for LeetCode 191 Number of 1 Bits
    Java for LeetCode 190 Reverse Bits
    Java for LeetCode 189 Rotate Array
  • 原文地址:https://www.cnblogs.com/lbnnbs/p/5924099.html
Copyright © 2011-2022 走看看