dedlfix: Performance, nur erste zeile lesen: fope file, file_get_contens

Beitrag lesen

echo $begrüßung;

Jetzt dachte ich vielleicht den klassischen Weg mit fread, aber wie sieht das in der Performance aus, was wäre der speicherschonenste Weg, nur die erste Zeile auszulesen?

Es gibt zum zeilenweisen Lesen die Funktion fgets().

Ich habe das nun probiert mit 1000 Dateien ca. 500kb/Datei:

$handle = fopen($fl, "r");
$cont = fread($handle,100);
$cont = substr($cont,0,strpos($cont,"\r\n"));
fclose($handle);

Aber im Vergleich zu:

$cont= file($fl);
$cont= $cont[0];

war das nicht wirklich viel schneller.

Und es wird noch (geringfügig) langsamer, wenn du den notwendigen Code zur Fehlerbehandlung einbaust. PHP-Funktionsaufrufe benötigen auch Rechenzeit. Wenn etwas intern gemacht werden kann, beispielsweise das Öffnen und Lesen innerhalb von file(), dann kann es durchaus sein, dass das komplette Lesen schneller ist als das verkürzte plus PHP-Funktionsaufrufe.

Wie funktioniert das rein technisch? Soweit ich das sehe, muss auch bei fread erst mal das ganze File reingezogen werden, also nicht wie ich erhofft hatte, das der Verbindungsaufbau abbricht sobald Length erreicht wird, oder ist das doch so?

Das steht doch unzweifelhaft im PHP-Handbuch: fread()

echo "$verabschiedung $name";