Tutorials

Einige nützliche Hilfen und Code-Schnipsel, die ich immer wieder benötige und deshalb hier für alle sammle.

Zurück zur Übersicht

PHP: Eine große Datei öffnen ohne memory_limit Fehler zu bekommen

#Tutorials#PHP

Möchte man mit PHP große Dateien öffnen, so bekommt man schnell einen memory_limit Fehler, weil die Datei größer ist, als erlaubt. Mit folgender Klasse kann man diesen Fehler umgehen, da hier immer nur Zeile für Zeile gestreamt wird.

class LazyFile {
 
  private $file;
 
  function __construct($filename, $mode) {
    $this->file = fopen($filename, $mode);
  }
 
  function lines() {
    while (($line = fgets($this->file)) !== false) {
        yield $line;
    }
  }
}

Möchte man das Ganze jetzt benutzen geht das wie folgt:


$file = new LazyFile('file.csv','r');
foreach ($file->lines() as $line) {
  //do something
}

Kommentare

Es gibt noch keine Kommentare. Sei der Erste!

Hinterlasse einen Kommentar

Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *

Kommentar wird gespeichert
Danke für deinen Kommentar! Sobald er freigegeben wurde erscheint er hier.