一台测试服务器因为没作fastcgi_buffer单独设置,在跑一个显示10w条数据的循环输出时只能显示4700-5200条记录php
<?php $str = ''; for($i = 0; $i < 100000;$i++) { //echo $i."<br>"; $str .= $i."<br>"; } echo $str; ?>
访问测试获得数据不完整,查看nginx手册后发现缘由在于fastcgi_buffer设置nginx
增长 fastcgi_buffers 256 128k;数据显示正常服务器
关于这个参数的解释:测试
fastcgi_buffersspa
语法: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一块儿被使用。
例如:code