Nun ja. Schauen wir mal. Originale Datei mit einer Änderung: Der Dateiname:

<?php //----------------------------------------------------- // Datei einlesen //----------------------------------------------------- $filename = "test.txt"; if ( ! $arr_file = file( $filename ) ) { echo "Fatal: '$filename' konnte nicht gelesen werden."; trigger_error( "'$filename' konnte nicht gelesen werden.", E_USER_ERROR ); } //----------------------------------------------------- // Zeilen ausgeben //----------------------------------------------------- foreach ($arr_file AS $zeile) { echo $zeile."<br>"; }

memory_limit ist auf 128MB gesetzt:

grep memory_limit /etc/php/7.2/cli/php.ini memory_limit = 128M

Datei ist 24 MB groß:

ls -s -h test.txt 24M test.txt

Run!

php test.php | wc -c 27464320

Fazit: Auf Grund des allgemein mehr Speicher fressenden Umgangs von Windows (PHP unter Windows benutzt natürlich die Windows-Libs) wird von PHP unter Unixoiden für die Funktion file() weniger Speicher gebraucht, so dass die selbe Operation, die unter Windows am identischen Speicherlimit scheiterte, unter Linux störungsfrei durchläuft.

freiwillige Angabe, für jeden sichtbar
freiwillige Angabe, für jeden sichtbar
freiwillige Angabe, für jeden sichtbar

Vorschau (Nachricht wird im Forum „SELF-Forum“ erscheinen)

  • Keine Tag-Vorschläge verfügbar
  • keine Tags vergeben

abbrechen