深圳公明网站建设,企业免费建站软件,哪些网站是增值网,山东建设监理协会网站无法登录客户端的请求到web服务器,web服务器再调用PHP代码;
PHP返回内容到web服务器,web服务器再返回给客户端
边执行边输出就需要web服务器和PHP都不缓存内容
首先, Nginx不缓存PHP返回的内容
header(X-Accel-Buffering: no);//关闭nginx的缓存
其次,PHP不缓存,PHP不缓存有两种方…客户端的请求到web服务器,web服务器再调用PHP代码;
PHP返回内容到web服务器,web服务器再返回给客户端
边执行边输出就需要web服务器和PHP都不缓存内容
首先, Nginx不缓存PHP返回的内容
header(X-Accel-Buffering: no);//关闭nginx的缓存
其次,PHP不缓存,PHP不缓存有两种方式, 注意: 不缓存也不是直接输出到客户端,而是转为等待输出,需要调用flush() 一是修改配置文件php.in,修改output_buffering为0或Off 默认是4096(K)
output_buffering 0
;或者
output_buffering Off 二是PHP代码中关闭 ob_end_flush();
//或者
ob_end_clean(); //与ob_end_flush类似, //二者区别: 在下次调用flush的时候, ob_end_clean不会输出在他之前echo/print的内容, 而ob_end_flush会 三是获取buffer中的内容进行输出
ob_flush()
最后展示
header(X-Accel-Buffering: no);//关闭nginx的缓存
echo begin...br;//方式1
ob_end_flush();//关闭缓存 数据不再存储到buffer区域中,变为等待输出状态
for($i 1; $i 3; $i)
{echo loading .$i.0%br;flush();//将等待输出的数据立刻输出到客户端sleep(1);
}//方式2
ob_end_flush();//关闭缓存 数据不再存储到buffer区域中,变为等待输出状态
ob_implicit_flush(1);//打开绝对隐式 刷送。每次输出调用后有一次刷送操作以便不再需要对 flush() 的显式调用。
for($i 1; $i 3; $i)
{echo loading .$i.0%br;sleep(1);
}//方式3
for($i 1; $i 3; $i)
{echo loading .$i.0%br;ob_flush();//获取缓存区的内容,转为等待输出状态flush();//将等待输出的数据立刻输出到客户端sleep(1);
} apache需要更改httpd.conf 的 FcgidOutputBufferSize 0
参考文章:
最详细的PHP flush()与ob_flush()的区别详解
详细介绍文档