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.