当前位置:编程学习 > php >>

三种解决方法PHP file_get_contents 函数超时的

这里就简单介绍三种: 
一、增加超时的时间限制 
这里需要注意:set_time_limit只是设置你的PHP程序的超时时间,而不是file_get_contents函数读取URL的超时时间。 
我一开始以为set_time_limit也能影响到file_get_contents,后来经测试,是无效的。真正的修改file_get_contents延时可以用resource $context的timeout参数: 

复制代码代码如下:

$opts = array( 
‘http'=>array(
 
‘method'=>”GET”,
 
‘timeout'=>60,
 
)
 
);
 
$context = stream_context_create($opts);
 
$html =file_get_contents('http://www.zzzyk.com', false, $context);
 
fpassthru($fp);
 


二、一次有延时的话那就多试几次 
有时候失败是因为网络等因素造成,没有解决办法,但是可以修改程序,失败时重试几次,仍然失败就放弃,因为file_get_contents()如果失败将返回 FALSE,所以可以下面这样编写代码: 

复制代码代码如下:

$cnt=0; 
while($cnt < 3 && ($str=@file_get_contents('http://www.xiaoyaxiao.com'))===FALSE) $cnt++; 

 

PHP 简单快速的获取文件信息,可以用函数 file_get_contents(),包括网络文件信息,当然file_get_contents()也有许多不稳定的因素,先来讲获取请求返回头信息 ;

示例:

<?php

//加上@ 是为了防止file_get_contents获取失败返回至命错误,影响后面的程序运行

@file_get_contents("http://zhaoxi.net");   
var_dump($http_response_header);  

?>

输出结果

array(9) {   
  [0]=>   
  string(15) "HTTP/1.1 200 OK"  //这个很关键,通过返回状态码可以得知是否成功
  [1]=>   
  string(35) "Date: Sat, 12 Apr 2012 17:30:38 GMT"  
  [2]=>   
  string(29) "Server: Apache/2.2.3 (CentOS)"  
  [3]=>   
  string(44) "Last-Modified: Tue, 15 Nov 2005 13:24:10 GMT"  
  [4]=>   
  string(27) "ETag: "280100-1b6-80bfd280""  
  [5]=>   
  string(20) "Accept-Ranges: bytes"  
  [6]=>   
  string(19) "Content-Length: 438"  
  [7]=>   
  string(17) "Connection: close"  
  [8]=>   
  string(38) "Content-Type: text/html; charset=UTF-8"  
}  

注意:

1、file_get_contents 用于获取网络文件时,如:(file_get_contents("http://www.zhaoxi.org/")),不能频繁使用,特别是网络不稳定时,容易造成超时引起服务占资源

2、file_get_contents 获取文件大小有限制

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,