首頁 後端開發 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 Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 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)

如何解決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()函數:如何從檔案讀取內容 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()函數的用法,並給出一些程式碼範例來幫助讀者更好

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和WebDriver擴充:如何處理網頁載入逾時和失敗 PHP和WebDriver擴充:如何處理網頁載入逾時和失敗 Jul 08, 2023 pm 12:21 PM

PHP和WebDriver擴充:如何處理網頁載入逾時和失敗引言:在使用Web自動化測試工具時,網路問題是很常見的挑戰之一。當我們使用PHP語言結合WebDriver擴充功能進行自動化測試時,經常會遇到網頁載入逾時或失敗的情況。在本文中,我將介紹如何使用PHP和WebDriver擴充功能來處理這些問題,並提供一些程式碼範例。一、設定網頁載入超時時間在自動化測試中,我們需

See all articles