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

天气终于晴了,但问题来了。在实现两个站点间用户数据同步,当使用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;  
}  
?> 

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
如何解决PHP Warning: file_get_contents(): Filename cannot be empty如何解决PHP Warning: file_get_contents(): Filename cannot be emptyAug 18, 2023 pm 07:30 PM

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

如何解决PHP Warning: file_get_contents(): failed to open stream: HTTP request failed如何解决PHP Warning: file_get_contents(): failed to open stream: HTTP request failedAug 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()函数的用法,并给出一些代码示例来帮助读者更好

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

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

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

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

如何使用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

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Hot Tools

EditPlus Chinese cracked version

EditPlus Chinese cracked version

Small size, syntax highlighting, does not support code prompt function

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

DVWA

DVWA

Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools