使用PHP讀取遠端檔案

2022-08-15 16:18:15 字數 2515 閱讀 8650

從php讀取乙個遠端檔案你至少有四個選項:

1. 使用fopen()

2. 使用 file_get_contents()

3. curl 

4,讓你自己的函式使用php的socket函式。

首先我要警告你關於一些。你可以只使用 fopen()和 file_get_contents()當啟用fopen包裝器。這個引數中指定的php。ini檔案並不能改變在執行時使用 ini設定(),知道你是否可以使用這兩個或不可以使用下面的**檢查包裝器設定的價值。fopen

if (ini_get('allow_url_fopen') == '1') else

1。使用fopen()

如果你使用 fopen()閱讀乙個遠端檔案的過程很簡單,從本地檔案讀取。唯一的區別是,您將指定url而不是檔名。看看下面的例子:

/ /確保遠端檔案成功開啟在做任何其他事情之前

while ($line =fread($fp, 1024))

// 做一些與這裡的內容

// ...

} else

現在,上面的**使用 fread()函式在while迴圈讀取1024位元組的資料在乙個迴圈。這段**還可以這樣寫:

/ /確保遠端檔案成功開啟在做任何其他事情之前

while ($line =fgets($fp, 1024))

// 做一些與這裡的內容

// ...

} else

相反的 fread()我們使用 fgets()它讀取一行資料到1024位元組。第乙個**更可取比第二雖然。想象一下如果遠端檔案的大小是50 kb和包含300行。使用第乙個**將導致迴圈執行了50次,但使用第二個迴圈將是執行三百次。

如果你考慮成本要呼叫乙個函式加上所需的時間讓300個請求的比例僅5然後顯然第乙個是贏家。

2。使用file_get_contents()

這是我最喜歡的閱讀方式遠端檔案,因為它是非常簡單的。只是呼叫這個函式,並指定乙個url作為引數。但一定要記得檢查返回值首先來決定它是否返回乙個錯誤處理結果之前

$content = file_get_contents('');

if ($content !== false) else

3。curl

不同於上述兩種方法使用curl不能說為straigthforward。

雖然這個庫是非常有用的,可能不同的協議(而不僅僅是http)進行連線和通訊,它需要更多的精力來學習。

另乙個問題是,並非所有的web主機有這個庫中的php安裝。

因此,我們一定要檢查庫的安裝,然後再嘗試使用它。

這是乙個基本的例子獲取遠端檔案

/ /確保旋度是安裝

if (function_exists('curl_init')) else

在某些情況下使用curl是速度比使用 file_get_contents()或 fopen()更快。這是因為curl預設處理壓縮協議(例如gzip)。許多**,大的、小的、使用gzip壓縮壓縮他們的網頁為了節省頻寬。這個**,例如,也使用gzip壓縮,減少頻寬使用到一半。所以,如果您是那種等不及的curl將適合你。

4。定製函式

在最壞的情況下,您的伺服器將禁用fopen包裝,並沒有安裝curl庫。

在這種情況下,你只需要做出你自己的方式。

我們的函式應當命名 getremotefile()這只需要乙個引數,遠端檔案的url。對這個函式的骨架如下所示

function getremotefile($url)

else

if (isset($parsedurl['query']))

if (isset($parsedurl['port'])) else

$timeout = 10;

$response = '';

// 連線到遠端伺服器

$fp = @fsockopen($host, '80', $errno, $errstr, $timeout );

if( !$fp ) else

fclose( $fp );

// strip the headers

$pos      = strpos($response, "\r\n\r\n");

$response = substr($response, $pos + 4);

}// 返回檔案的內容

return $response;

}上面的**傳送9行標題但只有前兩個是強制性的。因此,即使你只傳送這些

fputs($ fp」,獲得$ path http / 1.0 \ r \ n」。

「主持人:$主機\ r \ n \ r \ n」);

這個函式會正常工作。不總是雖然。因為該檔案儲存在乙個遠端伺服器它真的到該伺服器回覆你的請求。有些人編寫**頁阻止任何請求沒有適當的引用頁頭。有些人會只接受乙個特定的使用者**。其他需要cookie設定在頭。

php 讀取檔案

那如何讀取乙個檔案呢?我們先學乙個函式。int readfile string 檔名 linux類的讀了方式 readfile home paul test.txt windows類的讀取方式 readfile c boot.ini file get contents開啟檔案 上面的是單純打檔案就直...

PHP讀取遠端檔案的4種方法

1.fopen,fread 1 if file fopen r 5 fclose file 2.file get contents 很簡單的一句話 data file get contents 如果要限制超時時間,需要使用到它的 context引數 其中,第二個引數 use include path...

PHP如何讀取檔案

php讀取檔案可以讀取當前伺服器或遠端伺服器中的檔案。其步驟是 開啟檔案 讀檔案和關閉檔案。1,php如何開啟檔案 使用php函式fopen 開啟乙個檔案,fopen 一般使用2個引數表示開啟檔案的路徑和檔案模式。比如 fp fopen cnbruce.txt w 其中 cnbruce.txt 就表...