PHP 大文件上傳請求超時 nginx 超時配置

前兩天做一個文件上傳,因功能邏輯特殊,需要上傳文件并導入十幾萬條?的數(shù)據(jù),excel?文件過大的話可以采用?分段讀取數(shù)據(jù)的方式進行操作


首先設置這個頁面的運行時間?以及?php 進程內(nèi)存限制


然后是ajax?響應時長?時間長短?按個人?需求判定


限制請求體的大小

當我ajax?請求?插入數(shù)據(jù)的時候? 超過了 60秒后,頁面就返回了404 ,然后就開始找問題。

先找要找到php.ini?文件? Linux?命令行?可這樣運行:?php -r "phpinfo();" | grep php.ini


設置腳本可使用cpu?的時間? 和?等待輸入數(shù)據(jù)的時間

修改完后?重啟?php-fpm? :service php-fpm restart

?nginx超時配置參數(shù)說明:

? 1.? keepalive_timeout ?600; ? 連接超時時間,1分鐘,具體時間可以根據(jù)請求(例如后臺導入)需要的時間來設置

2.使用nginx服務器如果遇到timeou情況時可以如下設置參數(shù),使用fastcgi

? ? ?fastcgi_connect_timeout 75; ?鏈接

? ? ?fastcgi_read_timeout 600; ? 讀取? ??

? ? ?fastcgi_send_timeout 600; ? 發(fā)請求

成功解決問題。

其他nginx?配置參數(shù):

一、主要參數(shù)

使用nginx服務器如果遇到timeou情況時可以如下設置參數(shù),使用fastcgi

? ? ?fastcgi_connect_timeout 75; ?鏈接

? ? ?fastcgi_read_timeout 600; ? 讀取

? ? ?fastcgi_send_timeout 600; ? 發(fā)請求

這兩個選項.

fastcgi_read_timeout是指fastcgi進程向nginx進程發(fā)送response的整個過程的超時時間

fastcgi_send_timeout是指nginx進程向fastcgi進程發(fā)送request的整個過程的超時時間

? ? ?這兩個選項默認都是秒(s),可以手動指定為分鐘(m),小時(h)等

二、其他常用參數(shù)以及參數(shù)說明

? ? keepalive_timeout ?600; ? 連接超時時間,1分鐘,具體時間可以根據(jù)請求(例如后臺導入)需要的時間來設置

? ? proxy_connect_timeout 600; ? ?1分鐘

? ? proxy_read_timeout 600; ? ?1分鐘

nginx超時配置參數(shù)說明:

keepalive_timeout?

語法 keepalive_timeout timeout [ header_timeout ]

默認值 75s

上下文 http server location

說明 第一個參數(shù)指定了與client的keep-alive連接超時時間。服務器將會在這個時間后關閉連接??蛇x的第二個參數(shù)指定了在響應頭Keep-Alive: timeout=time中的time值。這個頭能夠讓一些瀏覽器主動關閉連接,這樣服務器就不必要去關閉連接了。沒有這個參數(shù),nginx不會發(fā)送Keep-Alive響應頭(盡管并不是由這個頭來決定連接是否“keep-alive”)

兩個參數(shù)的值可并不相同

注意不同瀏覽器怎么處理“keep-alive”頭

MSIE和Opera忽略掉"Keep-Alive: timeout=<N>" header.

MSIE保持連接大約60-65秒,然后發(fā)送TCP RST

Opera永久保持長連接

Mozilla keeps the connection alive for N plus about 1-10 seconds.

Konqueror保持長連接N秒

proxy_connect_timeout

語法 proxy_connect_timeout time?

默認值 60s

上下文 http server location

說明 該指令設置與upstream server的連接超時時間,有必要記住,這個超時不能超過75秒。

這個不是等待后端返回頁面的時間,那是由proxy_read_timeout聲明的。如果你的upstream服務器起來了,但是hanging住了(例如,沒有足夠的線程處理請求,所以把你的請求放到請求池里稍后處理),那么這個聲明是沒有用的,由于與upstream服務器的連接已經(jīng)建立了。

proxy_read_timeout

語法 proxy_read_timeout time?

默認值 60s

上下文 http server location

說明 該指令設置與代理服務器的讀超時時間。它決定了nginx會等待多長時間來獲得請求的響應。這個時間不是獲得整個response的時間,而是兩次reading操作的時間。

client_header_timeout

語法 client_header_timeout time

默認值 60s

上下文 http server

說明 指定等待client發(fā)送一個請求頭的超時時間(例如:GET / HTTP/1.1).僅當在一次read中,沒有收到請求頭,才會算成超時。如果在超時時間內(nèi),client沒發(fā)送任何東西,nginx返回HTTP狀態(tài)碼408(“Request timed out”)

client_body_timeout?

語法 client_body_timeout time

默認值 60s

上下文 http server location

說明 該指令設置請求體(request body)的讀超時時間。僅當在一次readstep中,沒有得到請求體,就會設為超時。超時后,nginx返回HTTP狀態(tài)碼408(“Request timed out”)

lingering_timeout

語法 lingering_timeout time

默認值 5s

上下文 http server location

說明 lingering_close生效后,在關閉連接前,會檢測是否有用戶發(fā)送的數(shù)據(jù)到達服務器,如果超過lingering_timeout時間后還沒有數(shù)據(jù)可讀,就直接關閉連接;否則,必須在讀取完連接緩沖區(qū)上的數(shù)據(jù)并丟棄掉后才會關閉連接。

resolver_timeout

語法 resolver_timeout time?

默認值 30s

上下文 http server location

說明 該指令設置DNS解析超時時間

proxy_send_timeout

語法 proxy_send_timeout time?

默認值 60s

上下文 http server location

說明 這個指定設置了發(fā)送請求給upstream服務器的超時時間。超時設置不是為了整個發(fā)送期間,而是在兩次write操作期間。如果超時后,upstream沒有收到新的數(shù)據(jù),nginx會關閉連接

proxy_upstream_fail_timeout(fail_timeout)

語法 server address [fail_timeout=30s]

默認值 10s

上下文 upstream

說明 Upstream模塊下 server指令的參數(shù),設置了某一個upstream后端失敗了指定次數(shù)(max_fails)后,該后端不可操作的時間,默認為10秒

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內(nèi)容