PHP输出缓冲(二)-- 缓冲配置

来源:互联网 发布:iec104规约java源码 编辑:程序博客网 时间:2024/04/30 22:44

PHP缓冲区配置
1.php.ini中的output_buffering配置
Off: 表示关闭PHP输出缓存
On: 打开无限大的输出缓存
4096: 打开大小为4096Byte的输出缓存

2.php.ini中的implicit_flush配置
On: 表示每次输出(如echo,print)后自动调用flush()函数后,直接输出
Off: 与On相反,每次输出后不会调用flush(),需要等到server buffering满了才会输出,但是我们可以用flush()函数代替它,不开启也没关系,反而更加灵活



nginx缓冲区配置
nginx缓冲区是每个进程独立的,不是所有进程共享的。

fastcgi_buffer_size 16k;
指定读取FastCGI应答头(response header)需要多大的缓冲区,这里可以设定为fastcgi_buffers指令制定的缓冲区大小。也可以指定一个更小的值。
应答头一般很小(不超过1k)。

fastcgi_buffers 16 16k;
指定本地需要用多少和多大的缓冲区来缓冲FastCGI的应答。
如上所示,如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存。
如果大于256k,大于256k的部分会缓存到fastcgi_temp指定的路径中,当然这对服务器负载来说是不明智的方案,因为内存中处理数据速度要快于硬盘。
通常这个值的设置应该选择一个你的站点中的php脚本所产生的页面大小的中间值(可以理解为公约数)。
比如你的站点大部分脚本所产生的页面大小为256k就可以把这个值设置为16 16k,或者4 64k 或者64 4k。
但很显然,后两种并不是好的设置方法,因为如果产生的页面只有32k,如果用4 64k它会分配1个64k的缓冲区去缓存,而如果使用64 4k它会分配8个4k的缓冲区去缓存,而如果使用16 16k则它会分配2个16k去缓存页面,这样看起来似乎更加合理。

fastcgi_busy_buffers_size 32k;
用来控制同时传输到客户端的buffer数量。一般设置为 fastcgi_buffer_size 的两倍
一旦fastcgi_buffers设置的 buffer被写入,直到buffer里面的数据被完整的传输完(传输到客户端),这些buffer将会一直处在busy状态,我们不能对这些 buffer进行任何别的操作。
所有处在busy状态的buffer size加起来不能超过fastcgi_busy_buffers_size。

fastcgi_max_temp_file_size 0;
关闭对所有请求道磁盘的缓冲。
当fastcgi_buffers的内容被写满之后
如果一个php脚本所产生的页面大小为256k,则会为其分配16个16k的缓冲区来缓存。
如果大于256k,大于256k的部分会缓存到fastcgi_temp指定的路径中,当然这对服务器负载来说是不明智的方案,因为内存中处理数据速度要快于硬盘。


fastcgi_temp_file_write_size
表示在写入缓存文件时使用多大的数据块,默认值是fastcgi_buffers的两倍。


0 0