在实际项目中,对于前端发过来的请求,需要在后端进行长时间的处理,但为了更好的用户体验,让PHP在后端处理时能快速响应而不阻塞,使用fastcgi_finish_request最为简单方便。
PHP 与 Web 服务器通过fastcgi_finish_request() 函数,能马上结束会话,而 PHP 线程可以继续在后台运行,保证不失效。而只要代码运行,就已经断开请求,并返回参数给前端了。接下来的代码都和前端没有关系了,既对于输出在页面的内容必须放在fastcgi_finish_request函数之前fastcgi_finish_request()结束客户端连接之后,运行时间依然会受最大执行时间影响,也就是说如果预计到代码在后端执行时间比较久,还是要设定时间限制。这样一来,在高并发下执行时间过久也会导致fastcgi进程不够用,不能及时释放就会爆502错误了。
网友评论