首頁 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 Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
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)

熱門話題

Java教學
1667
14
CakePHP 教程
1426
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1255
24
如何解決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、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()函數:如何從檔案讀取內容 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的內容到字串在Web開發中,經常需要從遠端伺服器取得資料或讀取遠端檔案。 PHP提供了一個非常強大的函數file_get_contents(),它可以方便地讀取URL的內容並將其保存到字串中。本文將介紹file_get_contents()函數的用法,並給出一些程式碼範例來幫助讀者更好

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

PHP函數介紹—file_get_contents(): 讀取檔案內容到字串 PHP函數介紹—file_get_contents(): 讀取檔案內容到字串 Jul 24, 2023 pm 06:40 PM

PHP函數介紹—file_get_contents():讀取檔案內容到字串在PHP開發中,經常需要讀取檔案的內容並處理。要實現這項功能,可以使用PHP內建的函數file_get_contents()。本文將介紹file_get_contents()函數,並提供一些程式碼範例以幫助讀者更好地理解其用法。 file_get_contents函數的基本介紹fi

See all articles