백엔드 개발 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 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
2 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PHP 경고 해결 방법: file_get_contents(): 파일 이름은 비워둘 수 없습니다. PHP 경고 해결 방법: file_get_contents(): 파일 이름은 비워둘 수 없습니다. Aug 18, 2023 pm 07:30 PM

PHPWarning 해결 방법: file_get_contents(): 파일 이름은 비울 수 없습니다. PHP 개발 과정에서 다음과 같은 오류 메시지가 자주 나타납니다. PHPWarning: file_get_contents(): 파일 이름은 비울 수 없습니다. 이 오류는 일반적으로 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 및 기타 기능의 파일 캐싱 처리 방법은 종종 파일에서 데이터를 읽거나 파일에 데이터를 써야 합니다. 또한 어떤 경우에는 빈번한 파일 읽기 및 쓰기 작업을 피하기 위해 파일 내용을 캐시하여 성능을 향상시켜야 합니다. PHP에는 파일 캐싱을 구현하는 데 도움이 되는 일반적으로 사용되는 몇 가지 함수가 있습니다.

PHP 함수 소개—file_get_contents(): URL 내용을 문자열로 읽어옵니다. PHP 함수 소개—file_get_contents(): URL 내용을 문자열로 읽어옵니다. Jul 24, 2023 pm 02:32 PM

PHP 함수 소개—file_get_contents(): URL의 내용을 문자열로 읽어옵니다. 웹 개발에서는 원격 서버에서 데이터를 얻거나 원격 파일을 읽어야 하는 경우가 많습니다. PHP는 URL의 내용을 편리하게 읽고 문자열로 저장할 수 있는 매우 강력한 함수 file_get_contents()를 제공합니다. 이 기사에서는 file_get_contents() 함수의 사용법을 소개하고 독자가 더 잘 이해할 수 있도록 몇 가지 코드 예제를 제공합니다.

Golang의 오류 처리: 시간 초과 오류를 처리하는 방법은 무엇입니까? Golang의 오류 처리: 시간 초과 오류를 처리하는 방법은 무엇입니까? Aug 07, 2023 pm 01:17 PM

Golang의 오류 처리: 시간 초과 오류를 처리하는 방법은 무엇입니까? 소개: 네트워크 요청을 사용하거나 시간이 많이 걸리는 작업을 수행하는 프로그램을 작성할 때 종종 시간 초과가 발생합니다. 이러한 시간 초과 오류는 네트워크 연결 문제, 과도한 처리 데이터 또는 외부 서비스 오류로 인해 발생할 수 있습니다. Golang에서는 몇 가지 기술을 사용하여 시간 초과 오류를 처리하고 프로그램의 견고성과 신뢰성을 보장할 수 있습니다. 이 문서에서는 몇 가지 일반적인 시간 초과 오류 처리 방법을 소개하고 해당 코드 예제를 제공합니다. 1. 시간 패키지 Go를 사용하세요.

PHP 및 WebDriver 확장: 웹 페이지 로드 시간 초과 및 실패를 처리하는 방법 PHP 및 WebDriver 확장: 웹 페이지 로드 시간 초과 및 실패를 처리하는 방법 Jul 08, 2023 pm 12:21 PM

PHP 및 WebDriver 확장: 웹 페이지 로드 시간 초과 및 실패를 처리하는 방법 소개: 네트워크 문제는 웹 자동화 테스트 도구를 사용할 때 흔히 발생하는 문제 중 하나입니다. 자동화된 테스트를 위해 WebDriver 확장과 결합된 PHP 언어를 사용할 때 웹 페이지 로딩 시간 초과 또는 실패가 자주 발생합니다. 이 기사에서는 PHP와 WebDriver 확장을 사용하여 이러한 문제를 처리하는 방법을 설명하고 몇 가지 코드 예제를 제공합니다. 1. 자동화된 테스트에서는 웹페이지 로딩 시간 초과를 설정해야 합니다.

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