¿Cómo obtener el número de líneas en un archivo usando PHP?

Dada una referencia de archivo, encuentre el número de líneas en este archivo usando PHP. Hay un total de 3 enfoques para resolver esto.

test.txt: este archivo se utiliza para probar todos los siguientes códigos PHP

Geeks
For
Geeks

Enfoque 1: cargue todo el archivo en la memoria y luego use la función count() para devolver el número de líneas en este archivo.

Ejemplo:

PHP

<?php
    $filePath = "test.txt";
    $lines = count(file($filePath));
    echo $lines;
?>

Producción:

3

Este enfoque carga todo el archivo en la memoria, lo que puede causar un problema de desbordamiento de memoria.

Enfoque 2: aquí cargaremos solo una línea de archivos a la vez, lo cual es mejor que el primer enfoque. La función PHP fopen() se usa para abrir un archivo o URL. La función PHP fgets() se usa para devolver una línea desde un archivo abierto. La función fclose() se usa para cerrar el puntero del archivo.

Ejemplo:

PHP

<?php
    $filePath="test.txt";
    $linecount = 0;
    $handleFile = fopen($file, "r");
    while(!feof($handleFile)){
      $line = fgets($handleFile);
      $linecount++;
    }
  
    fclose($handleFile);
  
    echo $linecount;
?>

Producción:

3

¿Qué pasa si el archivo de 1GB tiene solo una línea? Este código cargará 1 GB completo de datos, lo que puede causar un problema de desbordamiento de memoria.

Enfoque 3: cargaremos solo un tamaño específico de datos en la memoria. No nos importan los saltos de línea en el momento de la carga. Iteramos sobre los datos cargados para contar el número de saltos de línea que contiene.

Ejemplo:

PHP

<?php
    $filePath="test.txt";
    $linecount = 0;
    $handleFile = fopen($filePath, "r");
  
    while(!feof($handleFile)){
      // We are loading only 4096 bytes of data at a time.
      $line = fgets($handleFile, 4096);
        
      // We are using PHP_EOL (PHP End of Line)
      //to count number of line breaks in currently loaded data.
      $linecount = $linecount + substr_count($line, PHP_EOL);
    }
  
    fclose($handleFile);
  
    echo $linecount;
?>

Producción:

3

Este es un mejor enfoque en términos de espacio, pero tenga en cuenta que estamos iterando nuestros datos dos veces, por lo que el tiempo necesario será el doble.

Publicación traducida automáticamente

Artículo escrito por pratikraut0000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *