首页 后端开发 php教程 执行、获取远程代码返回:file_get_contents 超时处理的问题详解_PHP

执行、获取远程代码返回:file_get_contents 超时处理的问题详解_PHP

Jun 01, 2016 pm 12:05 PM
file_get_contents 超时处理

天气终于晴了,但问题来了。在实现两个站点间用户数据同步,当使用php函数 file_get_contents抓取执行远程页面时,如果连接超时将会输出一个Fatal Error或相当的慢,结果导致下面的代码不能运行。先了解一下PHP file_get_contents() 函数
定义和用法
file_get_contents() 函数把整个文件读入一个字符串中。
和 file() 一样,不同的是 file_get_contents() 把文件读入一个字符串。
file_get_contents() 函数是用于将文件的内容读入到一个字符串中的首选方法。如果操作系统支持,还会使用内存映射技术来增强性能。
语法
file_get_contents(path,include_path,context,start,max_length)参数 描述
path 必需。规定要读取的文件。
include_path 可选。如果也想在 include_path 中搜寻文件的话,可以将该参数设为 "1"。
context 可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
start 可选。规定在文件中开始读取的位置。该参数是 PHP 5.1 新加的。
max_length 可选。规定读取的字节数。该参数是 PHP 5.1 新加的。
说明
对 context 的支持是 PHP 5.0.0 添加的。
针对超时或页面过慢,一般可采取两个解决方案:

一. 利用file_get_contents()第三个参数
复制代码 代码如下:
$url = "http://zhoz.com/zhoz.php";     
$ctx = stream_context_create(array(     
‘http' => array(‘timeout' => 10)     
    )     
    );     
$result = @file_get_contents($url, 0, $ctx);     
if($result){     
        var_dump($result);     
    }else{     
echo " Buffer is empty";     
    }     
?>  

此方法1,我经测试在本地反映良好,但如果在外网测试(环境:中国→美国服务器间)基本都是超时的情况。
测试了TimeOut基本没有用了,建议以下方式

二. 使用curl扩展库
复制代码 代码如下:
$url = "http://zhoz.com/zhoz.php";     
try {     
echo date(‘Y-m-d h:i:s');     
echo "";     
//$buffer = file_get_contents($url);   
$buffer = zhoz_get_contents($url);     
echo date(‘Y-m-d h:i:s');     
if(emptyempty($buffer)) {     
echo " Buffer is empty";     
        } else {     
echo " Buffer is not empty";     
        }     
    } catch(Exception $e) {     
echo "error ";     
    }     
function zhoz_get_contents($url, $second = 5) {     
$ch = curl_init();     
        curl_setopt($ch,CURLOPT_URL,$url);     
        curl_setopt($ch,CURLOPT_HEADER,0);     
        curl_setopt($ch,CURLOPT_TIMEOUT,$second);     
        curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);     
$content = curl_exec($ch);     
        curl_close($ch);     
return $content;     
    }     
?>

综述,根据系统环境来选择到底应用哪种方法:
复制代码 代码如下:
function vita_get_url_content($url) {  
if(function_exists(‘file_get_contents')) {  
$file_contents = file_get_contents($url);  
} else {  
$ch = curl_init();  
$timeout = 5;  
curl_setopt ($ch, CURLOPT_URL, $url);  
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);  
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);  
$file_contents = curl_exec($ch);  
curl_close($ch);  
}  
return $file_contents;  
}  
?> 

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何解决PHP Warning: file_get_contents(): Filename cannot be empty 如何解决PHP Warning: file_get_contents(): Filename cannot be empty Aug 18, 2023 pm 07:30 PM

如何解决PHPWarning:file_get_contents():Filenamecannotbeempty在进行PHP开发的过程中,我们经常会遇到这样的错误提示:PHPWarning:file_get_contents():Filenamecannotbeempty。这个错误通常出现在使用file_get_contents函数时

如何解决PHP警告:file_get_contents():无法打开流:HTTP请求失败 如何解决PHP警告:file_get_contents():无法打开流:HTTP请求失败 Aug 18, 2023 pm 11:34 PM

如何解决PHPWarning:file_get_contents():failedtoopenstream:HTTPrequestfailed在进行PHP开发过程中,经常会遇到通过file_get_contents函数向远程服务器发起HTTP请求的情况。然而,有时候我们会遇到一个常见的错误提示:PHPWarning:file_get_c

PHP的file_get_contents()函数:如何从文件中读取内容 PHP的file_get_contents()函数:如何从文件中读取内容 Nov 04, 2023 pm 01:43 PM

PHP的file_get_contents()函数:如何从文件中读取内容,具体代码示例在PHP中,file_get_contents()是一个非常有用的函数,它允许我们从文件中读取内容。无论是读取文本文件,还是读取远程URL中的内容,该函数都能够轻松地完成任务。语法该函数的基本语法如下:stringfile_get_contents(string$f

PHP文件缓存函数详解:file_get_contents、file_put_contents、unlink等函数的文件缓存处理方法 PHP文件缓存函数详解:file_get_contents、file_put_contents、unlink等函数的文件缓存处理方法 Nov 18, 2023 am 09:37 AM

PHP文件缓存函数详解:file_get_contents、file_put_contents、unlink等函数的文件缓存处理方法,需要具体代码示例在Web开发中,我们经常需要从文件中读取数据或将数据写入到文件中。而且,在某些情况下,我们需要缓存文件的内容以避免频繁的文件读写操作,从而提高性能。在PHP中,有几个常用的函数可以帮助我们实现文件缓存,这其中包

PHP函数介绍—file_get_contents(): 读取URL的内容到字符串 PHP函数介绍—file_get_contents(): 读取URL的内容到字符串 Jul 24, 2023 pm 02:32 PM

PHP函数介绍—file_get_contents():读取URL的内容到字符串在Web开发中,经常需要从远程服务器获取数据或者读取远程文件。PHP提供了一个非常强大的函数file_get_contents(),它可以方便地读取URL的内容并将其保存到一个字符串中。本文将介绍file_get_contents()函数的用法,并给出一些代码示例来帮助读者更好

Golang中的错误处理:如何处理超时错误? Golang中的错误处理:如何处理超时错误? Aug 07, 2023 pm 01:17 PM

Golang中的错误处理:如何处理超时错误?引言:在编写使用网络请求或者进行耗时操作的程序时,我们经常会遇到超时的情况。这些超时错误可能是由于网络连接问题、处理数据过大或者外部服务故障等原因引起的。在Golang中,我们可以使用一些技术来处理超时错误,保证程序的健壮性和可靠性。本文将介绍一些常见的超时错误处理方法,并给出相应的代码示例。一、使用time包Go

PHP和WebDriver扩展:如何处理网页加载超时和失败 PHP和WebDriver扩展:如何处理网页加载超时和失败 Jul 08, 2023 pm 12:21 PM

PHP和WebDriver扩展:如何处理网页加载超时和失败引言:在使用Web自动化测试工具时,网络问题是很常见的挑战之一。当我们使用PHP语言结合WebDriver扩展进行自动化测试时,经常会遇到网页加载超时或失败的情况。在本文中,我将介绍如何使用PHP和WebDriver扩展来处理这些问题,并提供一些代码示例。一、设置网页加载超时时间在自动化测试中,我们需

如何使用PHP中的file_get_contents函数读取文件内容 如何使用PHP中的file_get_contents函数读取文件内容 Jun 26, 2023 pm 12:01 PM

在PHP中,我们常常需要从文件中读取数据。在这种情况下,我们可以使用file_get_contents函数。这个函数可以简单地从一个文件中读取所有内容,并将其作为一个字符串返回。这在许多场景下都非常有用,例如读取配置文件、读取日志文件等。在本文中,我们将介绍如何使用PHP中的file_get_contents函数来读取文件内容。步骤1:打开文件在使用file

See all articles