zoukankan      html  css  js  c++  java
  • php fastcgi_finish_request 函数的理解

    php fastcgi_finish_request 函数的理解
    1、官网解释:
    fastcgi_finish_request
    (PHP 5 >= 5.3.3, PHP 7)
    fastcgi_finish_request — 冲刷(flush)所有响应的数据给客户端
    说明 
    boolean fastcgi_finish_request ( void )
    此函数冲刷(flush)所有响应的数据给客户端并结束请求。 这使得客户端结束连接后,需要大量时间运行的任务能够继续运行。
    返回值
    成功时返回 TRUE, 或者在失败时返回 FALSE。
     
    2、此方法可以提高页面响应速度
    当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request的方法.按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行
     
    例子1:
    <?php
    echo '例子:';
    fastcgi_finish_request(); /* 响应完成, 关闭连接 */
     
    /* 记录日志 */
    file_put_contents('log.txt', '生存还是毁灭,这是个问题.');
    ?>
    通过浏览器访问此脚本, 结果发现并没有输出相应的字符串,但却生成了相应的文件.由此说明在调用fastcgi_finish_request后,客户端响应就已经结束,但与此同时服务端脚本却继续运行!这在一定程度上提高了响应速度,当然更科学的做法是:使用fastcgi_finish_request()函数集成队列消息,可以把消息异步发 送到队列。
     
    例子2:
    <?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模拟一些耗时的操作,浏览时没有被堵塞,程序却都执行了,具体看日志
     
    fastcgi_finish_reques()函数的缺点:
    1.PHP FastCGI 进程数有限,正在处理异步操作的php-cgi进程,无法处理新请求;
    2.如果并发访问量较大,php-cgi进程数用满,新访问请求,将没有php-cgi去处理。Nginx服务器会出现: 502 Bad Gateway。
     
     
     
  • 相关阅读:
    几个新角色:数据科学家、数据分析师、数据(算法)工程师
    人类投资经理再也无法击败电脑的时代终将到来了...
    Action Results in Web API 2
    Multiple actions were found that match the request in Web Api
    Routing in ASP.NET Web API
    how to create an asp.net web api project in visual studio 2017
    网站漏洞扫描工具
    How does asp.net web api work?
    asp.net web api history and how does it work?
    What is the difference between a web API and a web service?
  • 原文地址:https://www.cnblogs.com/wjq310/p/6049227.html
Copyright © 2011-2022 走看看