执行、获取远程代码返回: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;
}
?>

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

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

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제









PHPWarning 해결 방법: file_get_contents(): 파일 이름은 비울 수 없습니다. PHP 개발 과정에서 다음과 같은 오류 메시지가 자주 나타납니다. PHPWarning: file_get_contents(): 파일 이름은 비울 수 없습니다. 이 오류는 일반적으로 file_get_contents 함수를 사용할 때 발생합니다.

PHPWarning:file_get_contents():failedtoopenstream:HTTPrequestfailed 해결 방법 PHP 개발 중에 file_get_contents 함수를 통해 HTTP 요청이 원격 서버로 시작되는 상황이 자주 발생합니다. 그러나 때때로 다음과 같은 일반적인 오류 메시지가 표시됩니다: PHPWarning: file_get_c

PHP의 file_get_contents() 함수: 파일에서 내용을 읽는 방법, 특정 코드 예 PHP에서 file_get_contents()는 파일에서 내용을 읽을 수 있게 해주는 매우 유용한 함수입니다. 텍스트 파일을 읽든 원격 URL에서 콘텐츠를 읽든 이 기능을 사용하면 작업을 쉽게 완료할 수 있습니다. 구문 이 함수의 기본 구문은 다음과 같습니다. stringfile_get_contents(string$f

PHP 파일 캐싱 기능에 대한 자세한 설명: 특정 코드 예제가 필요한 file_get_contents, file_put_contents, unlink 및 기타 기능의 파일 캐싱 처리 방법은 종종 파일에서 데이터를 읽거나 파일에 데이터를 써야 합니다. 또한 어떤 경우에는 빈번한 파일 읽기 및 쓰기 작업을 피하기 위해 파일 내용을 캐시하여 성능을 향상시켜야 합니다. PHP에는 파일 캐싱을 구현하는 데 도움이 되는 일반적으로 사용되는 몇 가지 함수가 있습니다.

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

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

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

PHP에서는 파일에서 데이터를 읽어야 하는 경우가 많습니다. 이 경우 file_get_contents 함수를 사용할 수 있습니다. 이 함수는 단순히 파일의 모든 내용을 읽고 문자열로 반환할 수 있습니다. 이는 구성 파일 읽기, 로그 파일 읽기 등과 같은 많은 시나리오에서 매우 유용합니다. 이번 글에서는 PHP에서 file_get_contents 함수를 사용하여 파일 내용을 읽는 방법을 설명하겠습니다. 1단계: file을 사용하여 파일 열기
