Comment lire efficacement les N dernières lignes d'un fichier en PHP ?

Patricia Arquette
Libérer: 2024-11-03 11:37:02
original
940 Les gens l'ont consulté

How to Efficiently Read the Last N Lines of a File in PHP?

Lecture optimisée de la queue de fichier en PHP

Objectif :Obtenir les N dernières lignes d'un fichier de manière efficace .

Approches de solutions :

1. Méthode naïve :

  • Utilise la fonction file() pour charger l'intégralité du fichier dans un tableau.
  • Récupère le nombre de lignes souhaité à partir de la fin à l'aide du découpage de tableau.

2. Dépendance aux scripts externes :

  • Appelle la commande tail sur le système.
  • Uniquement viable si tail est disponible.

3 . Recherche sur un seul octet :

  • Parcourt le fichier en arrière, à la recherche de caractères de nouvelle ligne.

4. Tampon multi-octets :

  • Utilise un tampon de taille fixe pour optimiser la lecture de fichiers volumineux.

5. Tampon dynamique :

  • Étend la taille du tampon en fonction du nombre de lignes demandées.

Analyse des performances :

Des tests comparatifs ont été effectués sur des fichiers allant de 10 Ko à 10 Mo.

Fichier de 100 Ko :

  • La solution tampon dynamique (solution n°5) a présenté le meilleures performances pour tous les nombres de lignes.
  • La solution naïve (solution n°1) n'était pas adaptée en raison d'un épuisement potentiel de la mémoire.

Fichier de 10 Mo :

  • La solution n°5 est restée le choix le plus efficace.
  • La solution n°1 s'est avérée peu pratique en raison d'une utilisation excessive de la mémoire.

Fichier de 10 Ko :

  • La solution naïve (solution n°1) a fonctionné exceptionnellement bien en raison de sa faible empreinte mémoire.
  • Les solutions n°4 et n°5 ont également donné de bons résultats.

Conclusion :

Pour les cas d'utilisation générale et des performances optimales, la Solution n°5 (Tampon dynamique) est fortement recommandée.

Mises en garde :

La solution n°1 doit être évitée pour les fichiers de plus de 10 Ko afin d'éviter les problèmes de mémoire.

Solutions n°2 et n°3 ne sont pas optimaux car le n°2 s'appuie sur une commande externe et le n°3 souffre de performances lentes avec un nombre de lignes plus élevé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal