熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

執行、獲取遠程代碼返回:file

2022-06-13   來源: PHP編程 

  天氣終於晴了但問題來了在實現兩個站點間用戶數據同步當使用php函數 file_get_contents抓取執行遠程頁面時如果連接超時將會輸出一個Fatal Error或相當的慢結果導致下面的代碼不能運行先了解一下PHP file_get_contents() 函數
定義和用法
file_get_contents() 函數把整個文件讀入一個字符串中
和 file() 一樣不同的是 file_get_contents() 把文件讀入一個字符串
file_get_contents() 函數是用於將文件的內容讀入到一個字符串中的首選方法如果操作系統支持還會使用內存映射技術來增強性能
語法
file_get_contents(pathinclude_pathcontextstartmax_length)參數 描述
path 必需規定要讀取的文件
include_path 可選如果也想在 include_path 中搜尋文件的話可以將該參數設為 ""
context 可選規定文件句柄的環境
context 是一套可以修改流的行為的選項若使用 null則忽略
start 可選規定在文件中開始讀取的位置該參數是 PHP 新加的
max_length 可選規定讀取的字節數該參數是 PHP 新加的
說明
對 context 的支持是 PHP 添加的
針對超時或頁面過慢一般可采取兩個解決方案

利用file_get_contents()第三個參數

復制代碼 代碼如下:
$url = "
$ctx = stream_context_create(array(
‘http => array(‘timeout => )
)
);
$result = @file_get_contents($url $ctx);
if($result){
var_dump($result);
}else{
echo " Buffer is empty";
}
?>

  
此方法我經測試在本地反映良好但如果在外網測試(環境中國→美國服務器間)基本都是超時的情況
測試了TimeOut基本沒有用了建議以下方式

使用curl擴展庫

復制代碼 代碼如下:
$url = "
try {
echo date(‘Ymd h:i:s);
echo "";
//$buffer = file_get_contents($url);
$buffer = zhoz_get_contents($url);
echo date(‘Ymd 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 = ) {
$ch = curl_init();
curl_setopt($chCURLOPT_URL$url);
curl_setopt($chCURLOPT_HEADER);
curl_setopt($chCURLOPT_TIMEOUT$second);
curl_setopt($chCURLOPT_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 = ;
curl_setopt ($ch CURLOPT_URL $url);
curl_setopt ($ch CURLOPT_RETURNTRANSFER );
curl_setopt ($ch CURLOPT_CONNECTTIMEOUT $timeout);
$file_contents = curl_exec($ch);
curl_close($ch);
}
return $file_contents;
}
?>


From:http://tw.wingwit.com/Article/program/PHP/201311/20907.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.