2012-09-27 14 views
10

Ich versuche, eine große Datei (10M) mit PHP file_get_contentsGibt es ein Limit für PHP file_get_contents?

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

Es Dumps zurück

string(32720) 

und dann der Ausgabe mit nur einem Teil der Datei zeigt, zu lesen. Gibt es eine Grenze irgendwo von file_get_contents? Ich habe versucht, ini_set ('memory_limit', '512M'), aber das hat nicht funktioniert.

EDIT: ** vergessen zu erwähnen ** es ist eine Remote-Datei.

PROBLEM BEHOBEN :: Aus dem Festplattenspeicher. Das Problem behoben und jetzt funktioniert alles.

+0

Es sollte nicht so eine Grenze sein. Zeigt es den Anfang oder das Ende der Datei an? Sind Sie sicher, dass die richtige Datei gelesen wird? Was passiert, wenn Sie die Datei etwas kürzen? – AndreKR

+0

Lassen Sie 'datei' Dateigröße ($ Datei) 'vor dem Laden und' strlen ($ data) 'nach dem Laden. Ich bin ein bisschen neugierig, was daraus wird. –

+0

Haben Sie versucht, ein fread() für die Datei zu erstellen? Wenn ja, haben Sie das gleiche Problem? –

Antwort

0

Angenommen, der Inhalt der Datei, die Sie laden möchten, wird logisch durch Zeilenumbrüche getrennt (zB: keine Binärdatei), dann ist es besser, Zeile für Zeile zu lesen.

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

Sie könnten immer implode() (mit Ihrer Wahl der Zeilenumbruch Zeichen) das Array zurück auf einen einzelnen String, wenn Sie die Datei wirklich in einem „chunk“ benötigen.

Referenz -

+0

Ich vermute, dass sie mit so großen Dateien binär sind, also ist 'fgets' vielleicht keine gute Idee. –

+0

@ale - guter Punkt. Ich habe meine Annahme bezüglich der betreffenden Datei geklärt. – Lix

+0

@ale - (gerade bemerkt) in dem vom OP bereitgestellten Codebeispiel ist eine '.txt' Erweiterung vorgesehen. Das könnte also doch relevant sein. – Lix

Verwandte Themen