Reading files (fread, fgets, file) in PHP - Time & Space Complexity
When reading files in PHP, it's important to know how the time to read grows as the file gets bigger.
We want to understand how the reading operations scale with file size.
Analyze the time complexity of the following code snippet.
$handle = fopen('example.txt', 'r');
while (($line = fgets($handle)) !== false) {
echo $line;
}
fclose($handle);
This code reads a file line by line and prints each line until the end of the file.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Reading each line from the file using fgets inside a loop.
- How many times: Once for every line in the file, repeating until the file ends.
As the file gets bigger, the number of lines grows, so the loop runs more times.
| Input Size (lines) | Approx. Operations (reads) |
|---|---|
| 10 | 10 reads |
| 100 | 100 reads |
| 1000 | 1000 reads |
Pattern observation: The number of read operations grows directly with the number of lines in the file.
Time Complexity: O(n)
This means the time to read the file grows in a straight line with the number of lines in the file.
[X] Wrong: "Reading a file line by line is always very fast and constant time."
[OK] Correct: The time depends on how many lines the file has; more lines mean more reading steps, so it grows with file size.
Understanding how file reading scales helps you write efficient code and explain your choices clearly in real projects or interviews.
"What if we used fread to read the whole file at once instead of fgets line by line? How would the time complexity change?"