2020/04/10 PHP/Python/Java No Comments 使用fastcgi_finish_request实现异步操作提高页面响应速度 当PHP运行在FastCGI模式时,PHP FPM提供了一个名为fastcgi_finish_request()的函数方法。 按照文档上的说法,此方法可以提高请求的处理速度,如果有些处理可以在页面生成完后再进行,就可以使用这个方法。如: **1、**用户注册后的短信发送 或 邮件发送 **2、**局部代码延迟执行 **3、**运行日志记录 等一些耗时操作可以转化为异步操作,示例: ```php header('Content-Type:application/json; charset=utf-8'); $result = []; $result = [ 'code' => 200, 'msg' => 'Success', 'data' => '页面输出展示的内容(用户可以看见的)', ]; echo json_encode($result); fastcgi_finish_request(); //响应完成, 关闭连接 time_sleep_until(time()+5); //模拟耗时阻塞 file_put_contents('./logs/'.date('Ymd').'.txt', '服务器端会在当前时间的5秒后继续执行后生成'); ``` #### 注意: **1、**fastcgi_finish_reques()函数的缺点: (1)PHP FastCGI进程数有限,fastcgi_finish_reques会占用进程(正在处理异步操作的php-cgi进程,无法处理新请求); (2)当并发访问量较大,php-cgi进程数占满,新访问请求,将没有php-cgi去处理,WEB服务器会返回502 Bad Gateway。 **2、**考虑到fastcgi_finish_request函数只能运行在FastCGI模式,从代码的可移植性讲的话, 可在代码中附上如下代码避免在非FastCGI模式下抛错。 ```php if (!function_exists("fastcgi_finish_request")) { function fastcgi_finish_request() { } } ``` 本文最后更新于 2020-04-10 13:27:31 并被添加「php函数 php优化」标签,已有 8734 位童鞋阅读过。 本文作者:未来往事 本文链接:https://felixway.cn/post/675.html 本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处 相关文章 计算两个经纬度的距离/偏差米数_计算周边范围经纬度值 html无损截取_保留html标签 php平铺水印/图片添加水印/图片合成 URL数字安全码随机拼组生成及校验 PHP curl函数_解决curl返回空白问题
此处评论已关闭