|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2005-05-24 16:43 UTC] joropito at ciudad dot com dot ar
Description:
------------
I see that fsockopen() causes a memory leak although of closing filedescriptor.
Reproduce code:
---------------
system("/bin/ps -maxwvj -p ".posix_getpid());
$fd = fsockopen("www.yahoo.com", 80, $errno, $errstr, 3);
system("/bin/ps -maxwvj -p ".posix_getpid());
if($fd) {
$out = "GET / HTTP/1.1\nHost: www.yahoo.comConnection: Close\n\n";
fwrite($fd, $out);
$line = "";
while (!feof ($fd)) {
$lastline = fgets($fd);
$line .= $lastline;
if(ereg("Content-Type: text/html", $lastline)) { break; }
}
fclose($fd);
echo $line;
}
system("/bin/ps -maxwvj -p ".posix_getpid());
sleep(5);
Expected result:
----------------
You will see after issue fsockopen() memory usage rises, and if you issue fclose() does not free memory.
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Oct 25 00:00:02 2025 UTC |
Reproducible under php-4.3.9 Smaller reproducible code <?php system("/bin/ps -l -p ".posix_getpid()); $fd = fsockopen("www.yahoo.com", 80, $errno, $errstr, 3); system("/bin/ps -l -p ".posix_getpid()); if($fd) fclose($fd); system("/bin/ps -l -p ".posix_getpid()); ?>This example code show initial and final memory usage. I'm wrong? It doesnt free all resources. My cli application makes an infitite loop, and every time it tries to use network resources, memory usage increases and after some time no more memory available. <?php echo memory_get_usage()."\n"; $db = mysql_connect("dbhost", "dbuser", "dbpass"); mysql_close($db); unset($db) echo memory_get_usage()."\n"; ?>