|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #34471 fread() allocates length bytes without releasing unneeded
Submitted: 2005-09-12 03:03 UTC Modified: 2005-09-12 03:21 UTC
Avg. Score:5.0 ± 0.0
Reproduced:3 of 3 (100.0%)
Same Version:1 (33.3%)
Same OS:1 (33.3%)
From: wojtek at wojjie dot com Assigned:
Status: Wont fix Package: Performance problem
PHP Version: 5.0.5 OS: Gentoo/Fedora
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If this is not your bug, you can add a comment by following this link.
If this is your bug, but you forgot your password, you can retrieve your password here.
Bug Type:
From: wojtek at wojjie dot com
New email:
PHP Version: OS:


 [2005-09-12 03:03 UTC] wojtek at wojjie dot com
fread() seems to allocate length amount of memory for getting data from the connection, but does not release it till you do something to variable. If $dat did have data, and you did:


It would then release any unused memory. 

Not sure if this is a bug, but I thought I would submit it incase.

Reproduce code:
$fp=fsockopen('udp://', 27015, $errno, $errstr);
stream_set_blocking($fp, false);
$dat=fread($fp, 4096000);
echo strlen($dat)."\n";
echo (memory_get_usage()-$bmem)."\n";


Expected result:
Difference in memory usage should not be so huge as 4095896 bytes.

Actual result:


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2005-09-12 03:21 UTC]
That's the way fread() works.
Use stream_get_contents() instead.
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Mon Apr 15 13:01:32 2024 UTC