How to Read a Large File Line by Line in PHP

Minahil Noor Feb 02, 2024
  1. Use fgets() Function to Read a Large File Line by Line in PHP
  2. Use file() Function to Read a Large File Line by Line in PHP
  3. Use stream_get_line() Function to Read a Large File Line by Line in PHP
How to Read a Large File Line by Line in PHP

In this article, we will introduce methods to read a large file line by line in PHP.

  • Using fgets() function
  • Using file() function
  • Using stream_get_line() function

Use fgets() Function to Read a Large File Line by Line in PHP

The built-in function fgets() reads a line from an open file. We can use this function to read a large file line by line. The correct syntax to use this function is as follows.

fgets($fileName, $lengthOfFile);

The function fgets() has two parameters. The details of its parameters are as follows

Parameters Description
$fileName mandatory It is the file that we want to read line by line.
$lengthOfFile optional It specifies the length of the file to be read. Its default value is 1024 bytes.

This function returns a string of lengthOfFile -1 from the file specified by the user if successful. It returns False on failure.

The program below shows how we can use fgets() function to read a large file line by line. We will use fopen() and fclose() functions to open and close a file respectively. We have a text file named flowers.txt that contains the details of the flowers.

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

We have used the feof() function to read the file until the end. The output shows the content of the file read line by line.

Output:

fgets function to read a large file line by line in PHP

Use file() Function to Read a Large File Line by Line in PHP

In PHP, we can also use the file() function to read a file line by line. The file() function reads a file into an array line by line. The correct syntax to use this function is as follows:

file($fileName, $flags, $context)

The function file() accepts three parameters. The detail of its parameters is as follows

Parameters Description
$fileName mandatory It is the path where our file is stored.
$flags optional It specifies the constants that we can use as flags for this function. You can read it here.
$context optional It is the resource that you can create using stream_context_create() function.

The program that reads the file using the file() function is as follows:

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

Use stream_get_line() Function to Read a Large File Line by Line in PHP

We can also use the stream_get_line() function to read a file line by line. This function reads a file up to a delimiter. The correct syntax to use this function is as follows:

stream_get_line($handle, $length, $ending)

The function stream_get_line() accepts three parameters. The detail of its parameters is as follows

Parameters Description
$handle mandatory It is the path where our file is stored.
$length mandatory It specifies the file’s length to be read.
$ending mandatory It is a string that tells about the delimiter.

The program that reads the file using stream_get_line() function is as follows:

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

Output:

stream_get_line( function to read a large file line by line in PHP

Note
The delimiter . is removed from the output.

Related Article - PHP File