php超时处理

2017-10-18  本文已影响0人  wuxuan94

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);
上一篇下一篇

猜你喜欢

热点阅读