PHP中幾種常見的逾時處理全面總結(一)

來源:互聯網
上載者:User

在PHP開發中工作裡非常多使用到逾時處理到逾時的場合,我說幾個情境: 非同步擷取資料如果某個後端資料來源擷取不成功則跳過,不影響整個頁面展現 為了保證Web伺服器不會因為當個頁面處理效能差而導致無法訪問其他頁面,則會對某些頁面操作設定 對於某些上傳或者不確定處理時間的場合,則需要對整個流程中所有逾時設定為無限,否則任何一個環節設定不當,都會導致莫名執行中斷 多個後端模組(MySQL、Memcached、HTTP介面),為了防止單個介面效能太差,導致整個前面擷取資料太緩慢,影響頁面開啟速度,引起雪崩 。。。很多需要逾時的場合

這些地方都需要考慮逾時的設定,但是PHP中的逾時都是分門別類,各個處理方式和策略都不同,為了系統的描述,我總結了PHP中常用的逾時處理的總結。

【Web伺服器逾時處理】

[ Apache ]
一般在效能很高的情況下,預設所有逾時配置都是30秒,但是在上傳檔案,或者網路速度很慢的情況下,那麼可能觸發逾時操作。
目前apachefastcgiphp-fpm模式下有三個逾時設定:
fastcgi逾時設定:
修改httpd.conf的fastcgi串連配置,類似如下:

代碼如下
每次keep-alive的最大請求數,預設值是16

server.max-keep-alive-requests=100 keep-alive的最長等待時間,單位是秒,預設值是5

server.max-keep-alive-idle=1200 lighttpd的work子進程數,預設值是0,單進程運行

server.max-worker=2 限制使用者在發送請求的過程中,最大的中間停頓時間(單位是秒), 如果使用者在發送請求的過程中(沒發完請求),中間停頓的時間太長,lighttpd會主動中斷連線 預設值是60(秒)

server.max-read-idle=1200 限制使用者在接收應答的過程中,最大的中間停頓時間(單位是秒), 如果使用者在接收應答的過程中(沒接完),中間停頓的時間太長,lighttpd會主動中斷連線 預設值是360(秒)

server.max-write-idle=12000 讀用戶端請求的逾時限制,單位是秒,配為0表示不作限制 設定小於max-read-idle時,read-timeout生效

server.read-timeout=0 寫應答頁面給用戶端的逾時限制,單位是秒,配為0表示不作限制 設定小於max-write-idle時,write-timeout生效

server.write-timeout=0 請求的處理時間上限,如果用了mod_proxy_core,那就是和後端的互動時間限制,單位是秒

server.max-connection-idle=1200

說明:
對於一個keep-alive串連上的連續請求,發送第一個請求內容的最大間隔由參數max-read-idle決定,從第二個請求起,發送請求內容的最大間隔由參數max-keep-alive-idle決定。請求間的間隔逾時也由max-keep-alive-idle決定。發送請求內容的總時間逾時由參數read-timeout決定。Lighttpd與後端互動資料的逾時由max-connection-idle決定。

[ Nginx ]
配置:nginx.conf

代碼如下:
http{
#Fastcgi:(針對後端的fastcgi生效,fastcgi不屬於proxy模式)
fastcgi_connect_timeout5;#連線逾時
fastcgi_send_timeout10; #寫逾時
fastcgi_read_timeout10;#讀取逾時
#Proxy:(針對proxy/upstreams的生效)
proxy_connect_timeout15s;#連線逾時
proxy_read_timeout24s;#讀逾時
proxy_send_timeout10s; #寫逾時
}

說明:
Nginx 的逾時設定倒是非常清晰容易理解,上面逾時針對不同工作模式,但是因為逾時帶來的問題是非常多的。

希望以上對你有協助,最後,請幫忙點個贊謝謝。。。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.