ID: 10204
Updated by: wez
Reported By: [EMAIL PROTECTED]
Status: Open
Bug Type: Sockets related
Assigned To:
Comments:
I noticed this last night in the socket code: it uses a simple read-buffering scheme
where the read buffer will only grow, so we are effectively storing the everything we
have read in memory.
However, I would expect the behaviour to be the same with fread.
I take it the memory usage returns to normal once the page has completed?
--Wez.
Previous Comments:
---------------------------------------------------------------------------
[2001-04-06 07:54:22] [EMAIL PROTECTED]
Try this script (tested on windows, linux and open BSD(:
<?php
set_time_limit(0);
while (1) {
unset($page);
print "iteration ". ++$c;
$fp = fsockopen("google.com", 80);
fwrite($fp, "GET / HTTP/1.0rnrn");
while (!feof($fp)) {
$page .= fgets($fp, 1000);
}
}
?>
Run it with top or whatever running and watch the memory usage go up and up (not
especially quickly because the page is small, but in certain situations I've had
memory chewage of 1mb/minute).
Now cf.
<?php
set_time_limit(0);
while (1) {
unset($page);
print "iteration ". ++$c;
$fp = fsockopen("google.com", 80);
fwrite($fp, "GET / HTTP/1.0rnrn");
while (!feof($fp)) {
$page .= fread($fp, 1000);
}
}
?>
Memory usage remains constant here.
[This meant I had to rewrite the readLine method in Net_Socket to use fread instead of
fgets.]
---------------------------------------------------------------------------
ATTENTION! Do NOT reply to this email!
To reply, use the web interface found at http://bugs.php.net/?id=10204&edit=2
--
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]