Cómo leer un archivo grande línea por línea en PHP

Minahil Noor 30 enero 2023
  1. Usa la función fgets() para leer un archivo grande línea por línea en PHP
  2. Use la función file() para leer un archivo grande línea por línea en PHP
  3. Use la función stream_get_line() para leer un archivo grande línea por línea en PHP
Cómo leer un archivo grande línea por línea en PHP

En este artículo, introduciremos métodos para leer un archivo grande línea por línea en PHP.

  • Usando la función fgets()
  • Usando la función file()
  • Usando la función stream_get_line()

Usa la función fgets() para leer un archivo grande línea por línea en PHP

La función incorporada fgets() lee una línea de un archivo abierto. Podemos usar esta función para leer un archivo grande línea por línea. La sintaxis correcta para usar esta función es la siguiente.

fgets($fileName, $lengthOfFile);

La función fgets() tiene dos parámetros. Los detalles de sus parámetros son los siguientes

Parámetros Descripción
$fileName obligatorio Es el archivo que queremos leer línea por línea.
$lengthOfFile opcional Dice sobre la longitud del archivo a ser leído. Su valor por defecto es de 1024 bytes.

Esta función devuelve una string de lengthOfFile -1 del archivo especificado por el usuario si tiene éxito. Devuelve False si falla.

El siguiente programa muestra cómo podemos usar la función fgets() para leer un archivo grande línea por línea. Usaremos las funciones fopen() y fclose() para abrir y cerrar un archivo respectivamente. Tenemos un archivo de texto llamado flowers.txt que contiene los detalles de las flores.

<?php 
if ($file = fopen("flowers.txt", "r")) {
    while(!feof($file)) {
        $line = fgets($file);
       echo ("$line");
    }
    fclose($file);
}   
?> 

Hemos usado la función feof() para leer el archivo hasta el final. La salida muestra el contenido del archivo leído línea por línea.

Resultado:

La función fgets para leer un archivo grande línea por línea en PHP

Use la función file() para leer un archivo grande línea por línea en PHP

En PHP, también podemos usar la función file() para leer un archivo línea por línea. La función file() lee un archivo en un array línea por línea. La sintaxis correcta para usar esta función es la siguiente:

file($fileName, $flags, $context)

La función file() acepta tres parámetros. El detalle de sus parámetros es el siguiente

Parámetros Descripción
$fileName obligatorio Es la ruta donde se almacena nuestro archivo.
$flags opcional Nos habla de las constantes que podemos usar como banderas para esta función. Puedes leerlo aquí.
$context opcional Es el recurso que puedes crear usando la función stream_context_create().

El programa que lee el archivo usando la función file() es el siguiente:

<?php 
foreach(file('flowers.txt') as $line) {
   echo $line. "\n";
} 
?> 

Use la función stream_get_line() para leer un archivo grande línea por línea en PHP

También podemos usar la función stream_get_line() para leer un archivo línea por línea. Esta función lee un archivo hasta un delimitador. La sintaxis correcta para usar esta función es la siguiente:

stream_get_line($handle, $length, $ending)

La función stream_get_line() acepta tres parámetros. El detalle de sus parámetros es el siguiente

Parámetros Descripción
$handle obligatorio Es la ruta donde se almacena nuestro archivo.
$length obligatorio Dice la longitud del archivo para ser leído.
$ending obligatorio Es una cadena que habla sobre el delimitador.

El programa que lee el archivo usando la función stream_get_line() es el siguiente:

<?php 
$file = fopen("flowers.txt", "r+");
while ($line = stream_get_line($file, 1024 * 1024, ".")) {
  echo $line;
}
fclose($file);
?> 

Resultado:

función stream_get_line( para leer un archivo grande línea por línea en PHP

Nota
El delimitador . se elimina de la salida.

Artículo relacionado - PHP File