• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • PHP超時處理全面總結(2)

    發表于:2013-10-28來源:酷勤網作者:不詳點擊數: 標簽:php
    說明: 對于一個keep-alive連接上的連續請求,發送第一個請求內容的最大間隔由參數max-read-idle決定,從第二個請求起,發送請求內容的最大間隔由參數ma

      說明:

      對于一個keep-alive連接上的連續請求,發送第一個請求內容的最大間隔由參數max-read-idle決定,從第二個請求起,發送請求內容的最大間隔由參數max-keep-alive-idle決定。請求間的間隔超時也由max-keep-alive-idle決定。發送請求內容的總時間超時由參數read-timeout決定。Lighttpd與后端交互數據的超時由max-connection-idle決定。

      延伸閱讀:

      http://www.snooda.com/read/244

      [ 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 的超時設置倒是非常清晰容易理解,上面超時針對不同工作模式,但是因為超時帶來的問題是非常多的。

      延伸閱讀:

      http://hi.baidu.com/pibuchou/blog/item/a1e330dd71fb8a5995ee3753.html

      http://hi.baidu.com/pibuchou/blog/item/7cbccff0a3b77dc60b46e024.html

      http://hi.baidu.com/pibuchou/blog/item/10a549818f7e4c9df703a626.html

      http://www.apoyl.com/?p=466

      【PHP本身超時處理】

      [ PHP-fpm ]

      配置:php-fpm.conf

    <?xmlversion="1.0"?>

    <configuration>

    //...

    Setsthelimitonthenumberofsimultaneousrequeststhatwillbeserved.

    EquivalenttoApacheMaxClientsdirective.

    EquivalenttoPHP_FCGI_CHILDRENenvironmentinoriginalphp.fcgi

    Usedwithanypm_style.

    #php-cgi的進程數量

    <valuename="max_children">128</value>

    Thetimeout(inseconds)forservingasinglerequestafterwhichtheworkerprocesswillbeterminated

    Shouldbeusedwhen'max_execution_time'inioptiondoesnotstopscriptexecutionforsomereason

    '0s'means'off'

    #php-fpm 請求執行超時時間,0s為永不超時,否則設置一個 Ns 為超時的秒數

    <valuename="request_terminate_timeout">0s</value>

    Thetimeout(inseconds)forservingofsinglerequestafterwhichaphpbacktracewillbedumpedtoslow.logfile

    '0s'means'off'

    <valuename="request_slowlog_timeout">0s</value>

    </configuration>

      說明:

      在php.ini中,有一個參數max_execution_time可以設置PHP腳本的最大執行時間,但是,在php-cgi(php-fpm)中,該參數不會起效。真正能夠控制PHP腳本最大執行時:

      0s

      就是說如果是使用mod_php5.so的模式運行max_execution_time是會生效的,但是如果是php-fpm模式中運行時不生效的。

      延伸閱讀:

      http://blog.s135.com/file_get_contents/

      [ PHP ]

      配置:php.ini

      選項:

      max_execution_time=30

      或者在代碼里設置:

      ini_set("max_execution_time",30);

      set_time_limit(30);

      說明:

      對當前會話生效,比如設置0一直不超時,但是如果php的safe_mode打開了,這些設置都會不生效。

      效果一樣,但是具體內容需要參考php-fpm部分內容,如果php-fpm中設置了request_terminate_timeout的話,那么max_execution_time就不生效。

      【后端&接口訪問超時】

      【HTTP訪問】

      一般我們訪問HTTP方式很多,主要是:curl,socket,file_get_contents()等方法。

      如果碰到對方服務器一直沒有響應的時候,我們就悲劇了,很容易把整個服務器搞死,所以在訪問http的時候也需要考慮超時的問題。

      [ CURL 訪問HTTP]

      CURL 是我們常用的一種比較靠譜的訪問HTTP協議接口的lib庫,性能高,還有一些并發支持的功能等。

      CURL:

      curl_setopt($ch,opt)可以設置一些超時的設置,主要包括:

      *(重要)CURLOPT_TIMEOUT設置cURL允許執行的最長秒數。

      *(重要)CURLOPT_TIMEOUT_MS設置cURL允許執行的最長毫秒數。(在cURL7.16.2中被加入。從PHP5.2.3起可使用。)

      CURLOPT_CONNECTTIMEOUT在發起連接前等待的時間,如果設置為0,則無限等待。

      CURLOPT_CONNECTTIMEOUT_MS嘗試連接等待的時間,以毫秒為單位。如果設置為0,則無限等待。在cURL7.16.2中被加入。從PHP5.2.3開始可用。

      CURLOPT_DNS_CACHE_TIMEOUT設置在內存中保存DNS信息的時間,默認為120秒。

      curl普通秒級超時:

      $ch=curl_init();

      curl_setopt($ch,CURLOPT_URL,$url);

      curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);

    原文轉自:http://www.kuqin.com/web/20120808/324135.html

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>