Edit report at https://bugs.php.net/bug.php?id=62111&edit=1
ID: 62111
User updated by: hosiplan at gmail dot com
Reported by: hosiplan at gmail dot com
Summary: MySQL PDO memory leaks, when used own result row
class
Status: Open
Type: Bug
Package: PDO related
Operating System: Linux
PHP Version: 5.4.4RC1
Block user comment: N
Private report: N
New Comment:
I don't really care what you name it. It's a real problem and its eating my
memory and it shouldn't!
Previous Comments:
------------------------------------------------------------------------
[2012-06-12 13:33:16] [email protected]
There is no leak with MySQL. Memory usage increases, that's it.
==6216== LEAK SUMMARY:
==6216== definitely lost: 0 bytes in 0 blocks
==6216== indirectly lost: 0 bytes in 0 blocks
==6216== possibly lost: 0 bytes in 0 blocks
==6216== still reachable: 54 bytes in 2 blocks
==6216== suppressed: 0 bytes in 0 blocks
==6216== Rerun with --leak-check=full to see details of leaked memory
------------------------------------------------------------------------
[2012-06-11 13:48:11] juzna dot cz at gmail dot com
The same causes PHP to crash completely on Windows 32bit with MSSQL server
(using
sqlsrv driver). I guess the root cause will be related.
------------------------------------------------------------------------
[2012-05-22 20:39:55] juzna dot cz at gmail dot com
Leaks with mysql, no leaks with sqlite.
No need to fetchAll(); execute() is enough to get leaks
------------------------------------------------------------------------
[2012-05-22 20:12:17] hosiplan at gmail dot com
affected version
------------------------------------------------------------------------
[2012-05-22 20:10:33] hosiplan at gmail dot com
Sorry, I've coppied wrong code
Test script:
---------------
$db = new PDO('mysql:host=127.0.0.1;dbname=information_schema', 'root',
'password');
class DbRow { public function __construct($stt = NULL) { } }
$begin = memory_get_usage();
for ($i=0; $i < 10 ;$i++) {
$stt = $db->prepare("SELECT * FROM COLLATIONS");
$stt->setFetchMode(PDO::FETCH_CLASS, 'DbRow', array($stt));
$stt->execute();
$rows = $stt->fetchAll();
echo number_format((memory_get_usage() - $begin) / 1000000, 2, '.', '
'), " MB\n";
}
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=62111
--
Edit this bug report at https://bugs.php.net/bug.php?id=62111&edit=1