Aktueller Standort: Startseite> Neueste Artikel> Der Unterschied zwischen Stream_get_line und FGets und dem Vergleich der Nutzungsszenarien

Der Unterschied zwischen Stream_get_line und FGets und dem Vergleich der Nutzungsszenarien

gitbox 2025-05-29

Wie fGets () funktioniert

FGets () ist die am häufigsten verwendete Funktion zum Lesen einer Datenreihe. Seine Definition ist wie folgt:

 fgets(resource $handle, ?int $length = null): string|false
  • $ handle ist ein offener Dateizeiger (wie mit fopen () erhalten).

  • $ Länge ist die optionale maximale Leselänge (einschließlich Zeilenunterbrechungen). Wenn nicht angegeben, wird FGets () bis zum Ende der Zeile ( \ n ) oder am Ende der Datei gelesen.

Merkmale:

  • Endet automatisch mit einem neuen Zeilenzeichen ( \ n ).

  • Enthält Newlines in der zurückgegebenen Zeichenfolge.

  • Geeignet zum Lesen "Standard -Zeilenformat".

  • Zeilen -End -Zeichen können nicht angepasst werden.

Beispiel:

 $handle = fopen("https://gitbox.net/data.txt", "r");
while (($line = fgets($handle)) !== false) {
    echo $line;
}
fclose($handle);

Wie stream_get_line () funktioniert

stream_get_line () ist eine zugrunde liegendere und flexiblere Lesfunktion, die wie folgt definiert ist:

 stream_get_line(resource $handle, int $length, string $ending = ""): string|false
  • $ Länge ist die maximale Anzahl von Bytes zu lesen.

  • $ ending ist ein benutzerdefiniertes Zeilen Ending -Zeichen (optional).

Merkmale:

  • Der Endcharakter selbst wird nicht zurückgegeben.

  • Erlauben Sie benutzerdefinierte Zeilenendezeichen (z. B. "\ r \ n", die häufig in HTTP -Headern verwendet werden).

  • Nicht geeignet für das Lesen von Binärdatenblöcken mit Zeilenumbrüchen.

  • Der Rückgabeinhalt enthält keine Zeilenendezeichen, daher eignet sich er besser für Szenarien, in denen Datenstrukturen genau gesteuert werden.

Beispiel:

 $handle = fopen("https://gitbox.net/api/stream", "r");
while (($line = stream_get_line($handle, 1024, "\r\n")) !== false) {
    echo $line . PHP_EOL;
}
fclose($handle);

Zusammenfassung des Unterschieds

Merkmal fGets () Stream_get_line ()
Ob Zeilenpausen einbezogen werden sollen Ja NEIN
Können Sie das Zeilenende -Charakter anpassen? NEIN Ja
Leistung allgemein Besser (insbesondere im Netzwerkfluss)
Flexibilität Niedrig hoch
Anwendungsszenarien Lokale Textdatei lesen Netzwerkfluss, HTTP -Header -Parsen, benutzerdefinierte Protokollfluss

Jedes geeignete Szenario

fGets () ist geeignet für:

  • Lesen Sie lokale Protokolldateien oder Konfigurationsdateien.

  • Lesen Sie schnell Textdaten, die von Zeile organisiert sind.

  • Beim Schreiben von Skripten, um die Standardeingabe oder die Dateieingabe zu verarbeiten.

stream_get_line () ist geeignet für:

  • Lesen Sie segmentierte Daten in Netzwerkprotokollen wie HTTP oder SMTP.

  • Kontrolliert das Zeilen -Leseverhalten (ohne Endsymbole).

  • Erstellen Sie Ihren eigenen Parser (z. B. benutzerdefinierte Protokolle, Stream Data Cut basierend auf Zeilen -End -Zeichen).