日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
使用PHP讀取遠(yuǎn)程文件-創(chuàng)新互聯(lián)
來源:http://www.software8.co/wzjs/PHPshili/527.html使用PHP讀取遠(yuǎn)程文件
從php讀取一個(gè)遠(yuǎn)程文件你至少有四個(gè)選項(xiàng):   1. 使用fopen()
2. 使用 file_get_contents()
3. CURL  4,讓你自己的函數(shù)使用php的socket函數(shù)。   首先我要警告你關(guān)于一些。你可以只使用 fopen()和 file_get_contents()當(dāng)啟用fopen包裝器。這個(gè)參數(shù)中指定的php。ini文件并不能改變?cè)谶\(yùn)行時(shí)使用 ini設(shè)置(),知道你是否可以使用這兩個(gè)或不可以使用下面的代碼檢查包裝器設(shè)置的價(jià)值。fopen if (ini_get('allow_url_fopen') == '1') {
  // 使用fopen()或file_get_contents()
} else {
  // 使用curl或定制函數(shù)
} 1。使用fopen()   如果你使用 fopen()閱讀一個(gè)遠(yuǎn)程文件的過程很簡(jiǎn)單,從本地文件讀取。唯一的區(qū)別是,您將指定URL而不是文件名??纯聪旅娴睦?   / /確保遠(yuǎn)程文件成功打開在做任何其他事情之前

if ($fp = fopen('http://www.google.com/', 'r')) {
  $content = '';
  // 繼續(xù)閱讀,直到?jīng)]有什么離開
  while ($line = fread($fp, 1024)) {
    $content .= $line;
  }

成都創(chuàng)新互聯(lián)公司-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比那坡網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式那坡網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋那坡地區(qū)。費(fèi)用合理售后完善,十余年實(shí)體公司更值得信賴。

  // 做一些與這里的內(nèi)容
  // ...
} else {
  // 出錯(cuò)當(dāng)試圖打開指定的url
}

現(xiàn)在,上面的代碼使用 fread()函數(shù)在while循環(huán)讀取1024字節(jié)的數(shù)據(jù)在一個(gè)循環(huán)。這段代碼還可以這樣寫:   / /確保遠(yuǎn)程文件成功打開在做任何其他事情之前

if ($fp = fopen('http://www.google.com/', 'r')) {
  $content = '';
  // 繼續(xù)閱讀,直到?jīng)]有什么離開
  while ($line = fgets($fp, 1024)) {
    $content .= $line;
  }

  // 做一些與這里的內(nèi)容
  // ...
} else {
  // 出錯(cuò)當(dāng)試圖打開指定的url
}

  相反的 fread()我們使用 fgets()它讀取一行數(shù)據(jù)到1024字節(jié)。第一個(gè)代碼更可取比第二雖然。想象一下如果遠(yuǎn)程文件的大小是50 kb和包含300行。使用第一個(gè)代碼將導(dǎo)致循環(huán)執(zhí)行了50次,但使用第二個(gè)循環(huán)將是執(zhí)行三百次。   如果你考慮成本要調(diào)用一個(gè)函數(shù)加上所需的時(shí)間讓300個(gè)請(qǐng)求的比例僅5然后顯然第一個(gè)是贏家。   2。使用file_get_contents()   這是我最喜歡的閱讀方式遠(yuǎn)程文件,因?yàn)樗欠浅:?jiǎn)單的。只是調(diào)用這個(gè)函數(shù),并指定一個(gè)url作為參數(shù)。但一定要記得檢查返回值首先來決定它是否返回一個(gè)錯(cuò)誤處理結(jié)果之前 $content = file_get_contents('http://www.google.com/');
if ($content !== false) {
  // 做些什么內(nèi)容
} else {
  // 一個(gè)錯(cuò)誤發(fā)生
}   3。curl  

不同于上述兩種方法使用CURL不能說為straigthforward。雖然這個(gè)庫是非常有用的,可能不同的協(xié)議(而不僅僅是HTTP)進(jìn)行連接和通信,它需要更多的精力來學(xué)習(xí)。另一個(gè)問題是,并非所有的Web主機(jī)有這個(gè)庫中的PHP安裝。因此,我們一定要檢查庫的安裝,然后再嘗試使用它。

這是一個(gè)基本的例子獲取遠(yuǎn)程文件

/ /確保旋度是安裝 if (function_exists('curl_init')) { / /初始化一個(gè)新的curl資源  $ch = curl_init();   / /設(shè)置url獲取  curl_setopt($ch, CURLOPT_URL, 'http://www.google.com');   / /別給我頭的內(nèi)容   curl_setopt($ch, CURLOPT_HEADER, 0); / /返回值,而不是打印響應(yīng)瀏覽器  curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); / /使用一個(gè)用戶代理模仿一個(gè)瀏覽器   curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');  $content = curl_exec($ch); / /記得總是關(guān)閉會(huì)話和免費(fèi)的所有資源   curl_close($ch);
} else { / / curl庫沒有安裝,所以我們更好地利用其他東西 }   在某些情況下使用CURL是速度比使用 file_get_contents()或 fopen()更快。這是因?yàn)镃URL默認(rèn)處理壓縮協(xié)議(例如gzip)。許多網(wǎng)站,大的、小的、使用gzip壓縮壓縮他們的網(wǎng)頁為了節(jié)省帶寬。這個(gè)網(wǎng)站,例如,也使用gzip壓縮,減少帶寬使用到一半。所以,如果您是那種等不及的CURL將適合你。   4。定制函數(shù)   在最壞的情況下,您的服務(wù)器將禁用FOPEN包裝,并沒有安裝CURL庫。在這種情況下,你只需要做出你自己的方式。  我們的函數(shù)應(yīng)當(dāng)命名 getRemoteFile()這只需要一個(gè)參數(shù),遠(yuǎn)程文件的url。對(duì)這個(gè)函數(shù)的骨架如下所示 function getRemoteFile($url)
{ / / 1。把主機(jī)名和url路徑   / / 2。連接到遠(yuǎn)程服務(wù)器   / / 3。發(fā)送必要的標(biāo)題獲取文件   / / 4。檢索響應(yīng)來自遠(yuǎn)程服務(wù)器   / / 5。strip the headers   / / 6。返回文件的內(nèi)容   提取的主機(jī)名和url路徑從給定的url,我們將使用 parse_url()函數(shù)。當(dāng)給定url這個(gè)函數(shù)會(huì)輸出以下:
  • scheme
  • host
  • port
  • user
  • pass
  • path
  • query
  • fragment
  例如,如果url http://www.php-mysql-tutorial.com/somepage.php然后 parse_url()將返回:   Array (   [scheme] => http   [host] => www.php-mysql-tutorial.com   [path] => /somepage.php )   如果url http://myusername:mypassword@www.php-mysql-tutorial.com/somepage.php?q=whatsthis #ouch然后 parse_url()將返回這個(gè):   Array (   [scheme] => http   [host] => www.php-mysql-tutorial.com   [user] => myusername   [pass] => mypassword   [path] => /somepage.php   [query] => q=whatsthis   [fragment] => ouch )   為我們的新功能,我們只關(guān)心host, port, path and query.   可以建立一個(gè)連接到一個(gè)遠(yuǎn)程服務(wù)器我們使用 fsockopen()。這個(gè)函數(shù)只需要5個(gè)參數(shù)、hostname, port number,,a reference for error number, a reference for the error message and timeout function getRemoteFile($url)
{
  // 把主機(jī)名和url路徑
  $parsedUrl = parse_url($url);
  $host = $parsedUrl['host'];
  if (isset($parsedUrl['path'])) {
    $path = $parsedUrl['path'];
  } else {
    // url指向主機(jī)像http://www.mysite.com
    $path = '/';
  }

  if (isset($parsedUrl['query'])) {
    $path .= '?' . $parsedUrl['query'];
  }

  if (isset($parsedUrl['port'])) {
    $port = $parsedUrl['port'];
  } else {
    // 大多數(shù)網(wǎng)站使用端口80
    $port = '80';
  }

  $timeout = 10;
  $response = '';

  // 連接到遠(yuǎn)程服務(wù)器
  $fp = @fsockopen($host, '80', $errno, $errstr, $timeout );

  if( !$fp ) {
   echo "Cannot retrieve $url";
  } else {
   // 發(fā)送必要的標(biāo)題獲取文件
    fputs($fp, "GET $path HTTP/1.0 " .
         "Host: $host " .
         "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.3) Gecko/20060426 Firefox/1.5.0.3 " .
         "Accept: */* " .
         "Accept-Language: en-us,en;q=0.5 " .
         "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 " .
         "Keep-Alive: 300 " .
         "Connection: keep-alive " .
         "Referer: http://$host ");

   // 檢索響應(yīng)來自遠(yuǎn)程服務(wù)器
   while ( $line = fread( $fp, 4096 ) ) {
     $response .= $line;
   }

   fclose( $fp );

   // strip the headers
   $pos    = strpos($response, " ");
   $response = substr($response, $pos + 4);
  }

  // 返回文件的內(nèi)容
  return $response;
}

上面的代碼發(fā)送9行標(biāo)題但只有前兩個(gè)是強(qiáng)制性的。因此,即使你只發(fā)送這些 fputs($ fp”,獲得$ path HTTP / 1.0 r n”。 “主持人:$主機(jī) r n r n”);   這個(gè)函數(shù)會(huì)正常工作。不總是雖然。因?yàn)樵撐募鎯?chǔ)在一個(gè)遠(yuǎn)程服務(wù)器它真的到該服務(wù)器回復(fù)你的請(qǐng)求。有些人編寫代碼頁阻止任何請(qǐng)求沒有適當(dāng)?shù)囊庙擃^。有些人會(huì)只接受一個(gè)特定的用戶代理。其他需要cookie設(shè)置在頭。
文章題目:使用PHP讀取遠(yuǎn)程文件-創(chuàng)新互聯(lián)
文章分享:http://www.dlmjj.cn/article/psddd.html