Position actuelle: Accueil> Derniers articles> La différence entre Stream_get_line et Fgets et la comparaison des scénarios d'utilisation

La différence entre Stream_get_line et Fgets et la comparaison des scénarios d'utilisation

gitbox 2025-05-29

Comment fonctionne fgets ()

fGetts () est la fonction la plus couramment utilisée pour lire une ligne de données. Sa définition est la suivante:

 fgets(resource $handle, ?int $length = null): string|false
  • $ Handle est un pointeur de fichiers ouvert (comme obtenu avec fopen () ).

  • $ La longueur est la longueur de lecture maximale facultative (y compris les pauses de ligne). S'il n'est pas spécifié, FGETS () sera lu jusqu'à la fin de la ligne ( \ n ) ou la fin du fichier.

Caractéristiques:

  • Se termine automatiquement par un caractère Newline ( \ n ).

  • Contient Newlines dans la chaîne retournée.

  • Convient pour la lecture du "format de ligne standard".

  • Impossible de personnaliser les caractères de fin de ligne.

Exemple:

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

Comment stream_get_line () fonctionne

Stream_get_line () est une fonction de lecture plus sous-jacente et flexible, définie comme suit:

 stream_get_line(resource $handle, int $length, string $ending = ""): string|false
  • $ La longueur est le nombre maximum d'octets à lire.

  • $ fin est un caractère de fin de ligne personnalisé (facultatif).

Caractéristiques:

  • Le caractère final lui-même n'est pas renvoyé.

  • Autorisez les caractères de fin de ligne personnalisés (tels que "\ r \ n" couramment utilisés dans les en-têtes HTTP).

  • Pas adapté à la lecture des blocs de données binaires contenant des pauses de ligne.

  • Le contenu de retour n'inclut pas les caractères de fin de ligne, il est donc plus adapté aux scénarios où les structures de données sont contrôlées avec précision.

Exemple:

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

Résumé de la différence

caractéristiques fgets () stream_get_line ()
S'il faut inclure des pauses de ligne Oui Non
Pouvez-vous personnaliser le personnage de fin de ligne? Non Oui
performance en général Mieux (surtout dans le flux de réseau)
flexibilité Faible haut
Scénarios d'application Lecture de fichiers texte locaux Flux de réseau, analyseur HTTP, flux de protocole personnalisé

Chaque scénario d'utilisation approprié

fgets () convient à:

  • Lisez les fichiers journaux locaux ou les fichiers de configuration.

  • Lisez rapidement les données de texte organisées par ligne.

  • Lors de la rédaction de scripts pour traiter l'entrée standard ou l'entrée de fichier.

Stream_get_line () convient à:

  • Lisez des données segmentées dans des protocoles de réseau tels que HTTP ou SMTP.

  • Contrôle le comportement de lecture de ligne (à l'exclusion des symboles de fin).

  • Créez votre propre analyseur (tel que les protocoles personnalisés, Stream Data Cut en fonction des caractères de fin de ligne).