nginx fastcgi buffers影響頁面輸出數據大小記錄


一台測試服務器由於沒做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一起被使用。
例如:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM