ID: 45029 Updated by: [EMAIL PROTECTED] Reported By: [EMAIL PROTECTED] -Status: Open +Status: Bogus Bug Type: cURL related Operating System: Linux/FreeBSD PHP Version: 5.3CVS-2008-05-17 (CVS) New Comment:
Never mind. The combination of an infinitely growing static array and some caching in the memory manager made this look like a PHP bug when it actually wasn't. Previous Comments: ------------------------------------------------------------------------ [2008-05-17 17:39:21] [EMAIL PROTECTED] Description: ------------ Adding a bug for this so we can track it. The leak size isn't constant even though the post data size in this example is constant, and the returned data (a dns error, presumably) is the same. Seems like there is something weird in our postfield handling code in the curl extension. Note also that it stabilizes somehow, although this is an extremely simplified version of a long-running command-line script that seems to grow on each post with wildly varying post data. Reproduce code: --------------- <?php function curl($post) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "www.fdhfkdsslak.bogus"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); if($post) { curl_setopt($ch, CURLOPT_POST, 1); for($args='',$i=0;$i<75;$i++) $args .= "a=$i&"; curl_setopt($ch, CURLOPT_POSTFIELDS, $args); unset($args); } curl_exec($ch); curl_close($ch); } echo "start ".memory_get_usage()."\n"; for($i=0;$i<10;$i++) { curl(0); echo "GET ".memory_get_usage()."\n"; } for($i=0;$i<10;$i++) { curl(1); echo "POST ".memory_get_usage()."\n"; } ?> Expected result: ---------------- No memory_usage increase from one POST request to the next. Actual result: -------------- start 326616 GET 327256 GET 327276 GET 327276 GET 327276 GET 327276 GET 327276 GET 327276 GET 327276 GET 327276 GET 327276 POST 327516 POST 327588 POST 327652 POST 327712 POST 327892 POST 328064 POST 328228 POST 328384 POST 328528 POST 328628 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45029&edit=1