php教程 php手册 PHP file_get_contents设置超时处理方法

PHP file_get_contents设置超时处理方法

Jun 06, 2016 pm 08:27 PM
file_get_contents 시간 초과 처리

今天说的这篇是讲超时的,确实在跨服务器提交的时候,不可避免的会遇到超时的情况,这个时候怎么办?set_time_limit是没有用的,只有用context中的timeout时间来

file_get_contents的超时处理

话说,从PHP5开始,file_get_content已经支持context了(手册上写着:5.0.0 Added the context support. ),也就是说,从5.0开始,file_get_contents其实也可以POST数据。

今天说的这篇是讲超时的,确实在跨服务器提交的时候,不可避免的会遇到超时的情况,这个时候怎么办?set_time_limit是没有用的,只有用context中的timeout时间来控制。相反,我们不是要抑止,而是要管理。比如在超时返回错误后,进行一次尝试,就象js中的 settimeout那样,对函数重新处理。错误超过3次或者5次后,我们就确实的认为无法连接服务器而彻底放弃。这,是一个好办法,应该值得推荐使用。其实。不全是file_get_contents,只要支持context的都应该加上,,避免超时浪费时间。这样可以被支持的函数大致有:fsocketopen(该函数的最后一个参数。好象比较推荐在读stream的时候,使用stream_time_out函数进行控制),fopen(也是从PHP5开始加入context支持),file(PHP5加入支持),curl(curl有自已的变量 CURLOPT_TIMEOUT)等 。

在使用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'=>1,//单位秒 
   )  
);   

 $cnt=0;  
while($cntecho $cnt;  
echo $bb; 

二、一次有延时的话那就多试几次

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

复制代码 代码如下:


$cnt=0;  
 while($cnt

以上方法对付超时已经OK了。那么Post呢?细心点有人发现了'method'=>”GET”, 对!是不是能设置成post呢?百度找了下相关资料,还真可以!而且有人写出了山寨版的post传值函数,如下:

复制代码 代码如下:


function Post($url, $post = null){  
    $context = array ();  
    if (is_array ( $post )) {  
        ksort ( $post );  
        $context ['http'] = array (  
            'timeout' => 60,   
            'method' => 'POST',   
            'content' => http_build_query( $post, '', '&' )  
         );  

    }  
    return file_get_contents ( $url, false, stream_context_create ( $context ) );  
}  

 $data = array (  
    'name' => 'test',  
    'email' => 'admin@admin.com',  
    'submit' => 'submit',  
);  
echo Post ( 'http://www.jb51.net', $data ); 

OK , 上面函数完美了,既解决了超时控制又解决了Post传值。

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 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를 무료로 생성하십시오.

뜨거운 도구

메모장++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, 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() 함수: 파일에서 내용을 읽는 방법 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(): 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에서 file_get_contents 함수를 사용하여 파일 내용을 읽는 방법 PHP에서 file_get_contents 함수를 사용하여 파일 내용을 읽는 방법 Jun 26, 2023 pm 12:01 PM

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

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

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

See all articles