2012-09-27 131 views
10

我想讀使用PHP的file_get_contentsPHP file_get_contents是否有限制?

$file = 'http://www.remoteserver.com/test.txt'; 
$data = file_get_contents($file); 
var_dump ($data); 

它轉儲回

string(32720) 

,然後只顯示文件的部分輸出一個大文件(10M)。 file_get_contents的某處是否有限制?我試着做ini_set('memory_limit','512M'),但那不起作用。

編輯:** 忘記提及 **這是一個遠程文件。

問題解決 ::硬盤空間不足。修正了現在一切正常。

+0

不應該有這樣的限制。它顯示文件的開始還是結束?你確定它讀取正確的文件嗎?當你縮短文件時它會轉儲什麼? – AndreKR

+0

在加載之前它已經轉儲'filesize($ file)'並且在加載之後轉儲'strlen($ data)'。我有點好奇它是怎麼回事。 –

+0

你有沒有試圖在文件上做一個fread()?如果是這樣,你是否遇到同樣的問題? –

回答

0

假設你想要加載的文件的內容在邏輯上被換行符隔開(例如:不是二進制文件),那麼你可能會更好地逐行閱讀。

$fp = fopen($path_to_file, "r"); 
$fileLines = array(); 
while (!feof($fp)){ 
    array_push(fgets($fp),$fileContents); 
} 
fclose($$fp); 

你總是可以implode()(與您選擇換行字符)的陣列回一個字符串,如果你真的需要一個「塊」的文件。

參考 -

+0

我懷疑這些大文件是二進制文件,所以'fgets'可能不是個好主意。 –

+0

@ale - 好點。我澄清了我對有關文件的假設。 – Lix

+0

@ale - (剛注意到)在OP提供的代碼示例中,提供了'.txt'擴展名。所以這可能是相關的。 – Lix