一台测试服务器由于没做fastcgi_buffer单独设置,在跑一个显示10w条数据的循环输出时只能显示4700-5200条记录
<?
php
$str = ''
;
for(
$i = 0;
$i < 100000;
$i++
)
{
//echo $i."<br>";
$str .=
$i."<br>"
;
}
echo $str;
?>
访问测试得到数据不完整,查看nginx手册后发现原因在于fastcgi_buffer设置
增加 fastcgi_buffers 256 128k;数据显示正常
关于这个参数的解释:
fastcgi_buffers
语法:fastcgi_buffers the_number is_size; 默认值:fastcgi_buffers 8 4k/8k; 使用字段:http, server, location 这个参数指定了从FastCGI进程到来的应答,本地将用多少和多大的缓冲区读取。fastcgi_buffers可以设置为你的FastCGI返回的大部分应答大小,这样可以处理大部分的请求,较大的请求将被缓冲到磁盘。如果想关闭对所有请求道磁盘的缓冲,可以将fastcgi_max_temp_file_size 设置为0。fastcgi_buffer等于:fastcgi_buffer_size + the_number * is_size如果一个fastcgi应答为12k,那么fastcgi_buffers 64 4k将分配3个4k的buffer。这便是为什么fastcgi_buffers有两个参数,而fastcgi_buffer_size(用于应答头与应答的第一部分)只有1个参数,在fastcgi_buffer_size被清空后,它们和fastcgi_buffers一起被使用。例如:
转载于:https://www.cnblogs.com/cycsa/p/3287075.html