一般echo var_dump ....等等输出函数(语句)是经过了几个步骤,最终到浏览器展示
以下是PHP的输出流程
php echo,var_dump -> php output_buffering -> webServer buffer-> browser buff-> browser display
php输出语句/函数->php缓冲区配置->web服务器缓冲区配置->浏览器缓冲区->浏览器显示
php缓冲区配置主要由php.ini 中的output_buffering配置的,在默认情况下,output_buffering=4096
当php输出数据时,输出的数据将会先经过output_buffering中,直到数据大于output_buffering配置的值或者php文件执行完毕,则会将数据输出
关于浏览器分段输出的代码:(高版本下apache默认开启buffer,可通过配置httpd.conf,设置FcgidOutputBufferSize 0来保证不缓存)
<?php
for($i=0;$i<1000;$i++){
echo $i;
ob_flush();//刷新PHP自身缓冲区
flush();//刷新(特指apache)web服务器的缓冲区,输出数据
sleep(1);
}
nginx分段输出:
<?php
set_time_limit(0);
ob_end_clean();
ob_implicit_flush();
header('X-Accel-Buffering: no'); // 关键是加了这一行。
for($i=0;$i<1000;$i++){
echo $i;
sleep(1);
}
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn