国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

全面總結(jié)PHP超時(shí)處理

2020-03-22 19:12:03
字體:
供稿:網(wǎng)友
  • 【 概述 】

    在PHP開發(fā)中工作里非常多使用到超時(shí)處理到超時(shí)的場(chǎng)合,我說幾個(gè)場(chǎng)景:

    1. 異步獲取數(shù)據(jù)如果某個(gè)后端數(shù)據(jù)源獲取不成功則跳過,不影響整個(gè)頁面展現(xiàn)

    2. 為了保證Web服務(wù)器不會(huì)因?yàn)楫?dāng)個(gè)頁面處理性能差而導(dǎo)致無法訪問其他頁面,則會(huì)對(duì)某些頁面操作設(shè)置

    3. 對(duì)于某些上傳或者不確定處理時(shí)間的場(chǎng)合,則需要對(duì)整個(gè)流程中所有超時(shí)設(shè)置為無限,否則任何一個(gè)環(huán)節(jié)設(shè)置不當(dāng),都會(huì)導(dǎo)致莫名執(zhí)行中斷

    4. 多個(gè)后端模塊(html' target='_blank'>MySQL、Memcached、HTTP接口),為了防止單個(gè)接口性能太差,導(dǎo)致整個(gè)前面獲取數(shù)據(jù)太緩慢,影響頁面打開速度,引起雪崩

    5. 。。。很多需要超時(shí)的場(chǎng)合

    這些地方都需要考慮超時(shí)的設(shè)定,但是PHP中的超時(shí)都是分門別類,各個(gè)處理方式和策略都不同,為了系統(tǒng)的描述,我總結(jié)了PHP中常用的超時(shí)處理的總結(jié)。

    【W(wǎng)eb服務(wù)器超時(shí)處理】

    [ Apache ]

    一般在性能很高的情況下,缺省所有超時(shí)配置都是30秒,但是在上傳文件,或者網(wǎng)絡(luò)速度很慢的情況下,那么可能觸發(fā)超時(shí)操作。

    目前 apache fastcgi php-fpm 模式 下有三個(gè)超時(shí)設(shè)置:

    fastcgi 超時(shí)設(shè)置:

    修改 httpd.conf 的fastcgi連接配置,類似如下:

    <IfModule mod_fastcgi.c>
    FastCgiExternalServer /home/forum/apache/apache_php/cgi-bin/php-cgi -socket /home/forum/php5/etc/php-fpm.sock
    ScriptAlias /fcgi-bin/ "/home/forum/apache/apache_php/cgi-bin/"
    AddHandler php-fastcgi .php
    Action php-fastcgi /fcgi-bin/php-cgi
    AddType application/x-httpd-php .php
    </IfModule>

    缺省配置是 30s,如果需要定制自己的配置,需要修改配置,比如修改為100秒:(修改后重啟 apache):

    &lt;IfModule mod_fastcgi.c&gt;
    FastCgiExternalServer /home/forum/apache/apache_php/cgi-bin/php-cgi -socket /home/forum/php5/etc/php-fpm.sock -idle-timeout <strong>100</strong>
    ScriptAlias /fcgi-bin/ "/home/forum/apache/apache_php/cgi-bin/"
    AddHandler php-fastcgi .php
    Action php-fastcgi /fcgi-bin/php-cgi
    AddType application/x-httpd-php .php
    &lt;/IfModule&gt;

    如果超時(shí)會(huì)返回500錯(cuò)誤,斷開跟后端php服務(wù)的連接,同時(shí)記錄一條apache錯(cuò)誤日志:

    [Thu Jan 27 18:30:15 2011] [error] [client 10.81.41.110] FastCGI: comm with server "/home/forum/apache/apache_php/cgi-bin/php-cgi" aborted: idle timeout (30 sec)
    [Thu Jan 27 18:30:15 2011] [error] [client 10.81.41.110] FastCGI: incomplete headers (0 bytes) received from server "/home/forum/apache/apache_php/cgi-bin/php-cgi"其他 fastcgi 配置參數(shù)說明:

    IdleTimeout 發(fā)呆時(shí)限

    ProcessLifeTime 一個(gè)進(jìn)程的最長(zhǎng)生命周期,過期之后無條件kill

    MaxProcessCount 最大進(jìn)程個(gè)數(shù)

    DefaultMinClassProcessCount 每個(gè)程序啟動(dòng)的最小進(jìn)程個(gè)數(shù)

    DefaultMaxClassProcessCount 每個(gè)程序啟動(dòng)的最大進(jìn)程個(gè)數(shù)

    IPCConnectTimeout 程序響應(yīng)超時(shí)時(shí)間

    IPCCommTimeout 與程序通訊的最長(zhǎng)時(shí)間,上面的錯(cuò)誤有可能就是這個(gè)值設(shè)置過小造成的

    MaxRequestsPerProcess 每個(gè)進(jìn)程最多完成處理個(gè)數(shù),達(dá)成后自殺

    [ Lighttpd ]

    配置:lighttpd.conf

    Lighttpd配置中,關(guān)于超時(shí)的參數(shù)有如下幾個(gè)(篇幅考慮,只寫讀超時(shí),寫超時(shí)參數(shù)同理):

    主要涉及選項(xiàng):

    server.max-keep-alive-idle = 5

    server.max-read-idle = 60

    server.read-timeout = 0

    server.max-connection-idle = 360

    --------------------------------------------------
    # 每次keep-alive 的最大請(qǐng)求數(shù), 默認(rèn)值是16
    server.max-keep-alive-requests = 100

    # keep-alive的最長(zhǎng)等待時(shí)間, 單位是秒,默認(rèn)值是5
    server.max-keep-alive-idle = 1200

    # lighttpd的work子進(jìn)程數(shù),默認(rèn)值是0,單進(jìn)程運(yùn)行
    server.max-worker = 2

    # 限制用戶在發(fā)送請(qǐng)求的過程中,最大的中間停頓時(shí)間(單位是秒),
    # 如果用戶在發(fā)送請(qǐng)求的過程中(沒發(fā)完請(qǐng)求),中間停頓的時(shí)間太長(zhǎng),lighttpd會(huì)主動(dòng)斷開連接
    # 默認(rèn)值是60(秒)
    server.max-read-idle = 1200

    # 限制用戶在接收應(yīng)答的過程中,最大的中間停頓時(shí)間(單位是秒),
    # 如果用戶在接收應(yīng)答的過程中(沒接完),中間停頓的時(shí)間太長(zhǎng),lighttpd會(huì)主動(dòng)斷開連接
    # 默認(rèn)值是360(秒)
    server.max-write-idle = 12000

    # 讀客戶端請(qǐng)求的超時(shí)限制,單位是秒, 配為0表示不作限制
    # 設(shè)置小于max-read-idle時(shí),read-timeout生效
    server.read-timeout = 0

    # 寫應(yīng)答頁面給客戶端的超時(shí)限制,單位是秒,配為0表示不作限制

    鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

  • 發(fā)表評(píng)論 共有條評(píng)論
    用戶名: 密碼:
    驗(yàn)證碼: 匿名發(fā)表
    主站蜘蛛池模板: 太原市| 徐水县| 柯坪县| 慈溪市| 苍梧县| 西乌珠穆沁旗| 屏南县| 资中县| 德令哈市| 泰顺县| 上犹县| 松阳县| 松江区| 甘谷县| 涿州市| 孝感市| 滦平县| 云霄县| 拉孜县| 鄢陵县| 泗阳县| 锦州市| 禄丰县| 乌拉特前旗| 衢州市| 祁门县| 巴林左旗| 增城市| 偃师市| 永德县| 会东县| 双峰县| 武胜县| 清丰县| 宽甸| 张家港市| 三门县| 玉田县| 萨嘎县| 汝州市| 霍山县|