美文网首页
php超时处理

php超时处理

作者: wuxuan94 | 来源:发表于2017-10-18 18:59 被阅读0次

    1.Apache
    一般在性能很高的情况下,缺省所有超时配置都是30秒,但是在上传文件,或者网络速度很慢的情况下,那么可能触发超时操作。
    目前apachefastcgiphp-fpm模式下有三个超时设置:
    fastcgi超时设置:
    修改httpd.conf的fastcgi连接配置

    <IfModulemod_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/" 
    AddHandlerphp-fastcgi.php 
    Actionphp-fastcgi/fcgi-bin/php-cgi 
    AddTypeapplication/x-httpd-php.php 
    </IfModule> 
    

    缺省配置是30s,如果需要定制自己的配置,需要修改配置,比如修改为50秒

    <IfModulemod_fastcgi.c> 
    FastCgiExternalServer/home/forum/apache/apache_php/cgi-bin/php-cgi-socket/home/forum/php5/etc/php-fpm.sock-idle-timeout50 
    ScriptAlias/fcgi-bin/"/home/forum/apache/apache_php/cgi-bin/" 
    AddHandlerphp-fastcgi.php 
    Actionphp-fastcgi/fcgi-bin/php-cgi 
    AddTypeapplication/x-httpd-php.php 
    </IfModule> 
    

    2.Nginx

    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; #写超时 
    } 
    

    3.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就不生效。
    4.curl

    CURL: 
    curl_setopt($ch,opt)可以设置一些超时的设置,主要包括: 
    CURLOPT_TIMEOUT设置cURL允许执行的最长秒数。 
    CURLOPT_TIMEOUT_MS设置cURL允许执行的最长毫秒数。
    CURLOPT_CONNECTTIMEOUT在发起连接前等待的时间,如果设置为0,则无限等待。 
    
    

    5.file_get_contents

    $timeout=array( 
    'http'=>array( 
    'timeout'=>5//设置一个超时时间,单位为秒 
    ) 
    ); 
    $ctx=stream_context_create($timeout); 
    $text=file_get_contents("http://example.com/",0,$ctx); 
    
    //超时处理
            ini_set("max_execution_time",5);
            set_time_limit(5);
    

    相关文章

      网友评论

          本文标题:php超时处理

          本文链接:https://www.haomeiwen.com/subject/rvbeuxtx.html