php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #14474 Apache PHP Module cannot seem to handle large amounts of output
Submitted: 2001-12-12 19:28 UTC Modified: 2002-03-26 03:39 UTC
Votes:24
Avg. Score:4.8 ± 0.8
Reproduced:24 of 24 (100.0%)
Same Version:14 (58.3%)
Same OS:21 (87.5%)
From: php at brentc dot com Assigned:
Status: Closed Package: Scripting Engine problem
PHP Version: 4.1.0 OS: Windows XP Pro/Linux
Private report: No CVE-ID: None
View Add Comment Developer Edit
Welcome! If you don't have a Git account, you can't do anything here.
You can add a comment by following this link or if you reported this bug, you can edit this bug over here.
(description)
Block user comment
Status: Assign to:
Package:
Bug Type:
Summary:
From: php at brentc dot com
New email:
PHP Version: OS:

 

 [2001-12-12 19:28 UTC] php at brentc dot com
Note: this seems to be the same problem as #14222, but I can't seem to append stuff to someone elses bug so...

This is something I first noticed when I upgraded from XP RC1 to WinXP Final, when using PHP 4.0.6.  I upgraded to 4.1.0 today, and it doesn't solve the problem.

The php apache module doesn't seem able to handle outputting moderate to large sized pages.

I have been able to reliably reproduce the problem with the following script:

<?PHP
set_time_limit(900);
for ($i = 0; $i<1000000; $i++){
print "This is line number " . ($i+1) . "<br>";
}
?>

Viewing this page with internet explorer causes it to go into an almost endless loop of relaoding the page.  It will display the first few 'this line is number...' and then will reload the page over and over.  On some sessions IE will eventually show it's 'The page cannot be displayed' page, and sometimes it will just reload indefinitly.

Viewing this page with Mozilla/Netscape doesn't have the same effect.  Mozilla doesn't go through the reload loop, but will not show the page as it should either.  There will be unexplained (no errors) jumps in numbers/missing output such as:

This is line number 2368
This is line number 2369This is line number 2517
This is line number 2518

But the errors in output don't occur in the same spot each time.  And evenutally (well short of 1,000,000 lines) the output will just stop with no error,  often in mid line.

I have found that adding 'flush();' just after the 'print "This is line...' seems to fix the problem.

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-12-12 20:33 UTC] yohgaki@php.net
This problem reveals a memory limit bailout problem.
Even if PHP exhsusted memory, script does not exit.

PHP logs following logs many times. (Linux/PHP4.1.0, without output buffering)

[13-Dec-2001 10:27:52] PHP Fatal error:  Allowed memory size of 8388608 bytes exhausted (tried to allocate 10240 bytes) in /home/yohgaki/public_html/bugs/14474/bug.php on line 4

Type is changed to Scripting Engine Problem.
 [2001-12-14 12:57 UTC] yohgaki@php.net
I think this is critical
 [2001-12-15 11:20 UTC] zeev@php.net
I don't think that our current analysis is correct.  Take a look at the access log - I'm pretty sure you'd see that the page is being repeatedly requested by IE, and not requested only once.

Something about the way the server disconnects may cause IE to think that the page was not properly fetched, and make it try to reload it.  That would be my guess...
 [2001-12-15 22:21 UTC] yohgaki@php.net
Probably, Zeev is right about regarding 
[2001-12-12 20:33:45] yohgaki@php.net
update.  Since I didn't see active httpd process.

httpd should close connection when PHP cannot execute script, anyway ;)
(I suppose httpd is not closing connection. With my IE under w2k, networks may become ususable. Mozilla under linux halts. This is critical :)

More detailed analysys is required. Any volanteers?
 [2002-01-18 10:54 UTC] mcq at email dot ro
I've tried the script on PHP 4.0.6, Windows 2000 Pro, Apache 1.3.22, php installed as a module.
If I use a download manager to access the script it works.
I use Mass Downloader 2.2 and to get the file I write something like this to the url address: http://localhost/bug.php.
The program starts downloading the file and after downloading 28.55 Mb stops, but it doesn't say that the download finished and after 5 sec. it starts downloading the file again. If I set the for loop only to 100 the result is the same, after the program transfers 2.5 Kb it waits for 5 sec. after he tryes again to download it.
But if I try this with IE (when the loop is set to 100) everything it's ok.
So, after running this tests, I think that the problem is not that PHP does not support large outputs, but the browser. (28.55 Mb it's a huge html file).
I've tested IE with the loop set to 100000 and it works.
If I set the loop to 1000000 then I ran aout of memory, because my page file is only of 380 Mb. But maybe if I would have more memory everything would be OK.
 [2002-02-05 04:36 UTC] tonalgeek at hotmail dot com
I've used a packet logger and have found that PHP seems to halt transmission around a php instruction.
The socket is actually closed, I'm not sure if there needs to be an 'END' string at the end of an http session, but there are no CR's or anything like that on the end.
 [2002-02-05 04:36 UTC] tonalgeek at hotmail dot com
I've used a packet logger and have found that PHP seems to halt transmission around a php instruction.
The socket is actually closed, I'm not sure if there needs to be an 'END' string at the end of an http session, but there are no CR's or anything like that on the end.
 [2002-02-06 00:51 UTC] tonalgeek at hotmail dot com
Adding to my previous comment, I saw no:

<CR>
0
<CR>
<Disconnect>

at the end of my http session.
OK - The HTTP Request is not closed properly. Only got:

blahblah blah blah<br>
<CR>
blafjaskasdjadsjf<font size="1"$sample_write[$i]
<Disconnect>

There must be an <CR>0<CR> at the end of the reply.
 [2002-03-26 03:39 UTC] derick@php.net
Seems like a bug in IE to Markus, Jani, Tal and me.
closing
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Fri May 03 04:01:32 2024 UTC