Bug #51796 [Fbk->NoF]: Memory leak when executing SQL "EXEC" statements
Edit report at https://bugs.php.net/bug.php?id=51796&edit=1
ID: 51796
Updated by: php-bugs@lists.php.net
Reported by: J dot Antonio at jaruz dot com
Summary: Memory leak when executing SQL "EXEC" statements
-Status: Feedback
+Status: No Feedback
Type: Bug
Package: PDO related
Operating System: Ubuntu 10.04 LTS
PHP Version: 5.3.2
New Comment:
No feedback was provided. The bug is being suspended because
we assume that you are no longer experiencing the problem.
If this is not the case and you are able to provide the
information that was requested earlier, please do so and
change the status of the bug back to "Open". Thank you.
Previous Comments:
------------------------------------------------------------------------
[2010-05-12 18:43:37] sixd@php.net
Try the patches and see if your bug is a duplicate.
------------------------------------------------------------------------
[2010-05-12 18:41:32] sixd@php.net
For reference, there are some pdo_dblib patches mentioned in
http://bugs.php.net/50755
------------------------------------------------------------------------
[2010-05-11 17:50:44] J dot Antonio at jaruz dot com
I forgot to mention this is using PDO_DBLIB.
------------------------------------------------------------------------
[2010-05-11 17:48:35] J dot Antonio at jaruz dot com
Description:
------------
On Linux, using PHP 5.3.2-1ubuntu4 with Suhosin-Patch (cli) and FreeTDS 0.82-6build1 (it's a
vanilla lucid install, fully up to date):
When executing stored procedures using the "EXEC" SQL statement, both
PDOStatement->execute as well as PDO::query seem to have a memory leak. We found this while
executing a stored procedure within a loop: memory usage just kept increasing till the memory limit
was reached. Unsetting/nullyfing variables does not help.
The leak is not present (memory usage stays perfectly constant) when using a "SELECT" SQL
statement (which returns the exact same results as the stored procedure).
I have a feeling PDO is maybe only clearing the memory when it deals with a "SELECT"
statement, and it misses the fact that data can also come back through "EXEC" statements?
This bug might be slightly related to bug 50755.
Test script:
---------------
// $polyItemArray is populated with a list of 300 IDs (integers).
// We loop through the array, and execute a stored procedure during each iteration:
foreach( $polyItemArray as $polyItemKey => $polyItem) {
echo date('H:i:s') . ' | Processing: ' . $polyItem['sgp_id'];
$dbh->query('EXEC proc_map_get_sgp_polygons ' . $polyItem['sgp_id'],
PDO::FETCH_ASSOC);
/*
// Alternate way of calling the procedure using PDOStatement; same leak is present:
$stmt = $dbh->prepare($sql);
$stmt->setFetchMode(PDO::FETCH_ASSOC);
$stmt->execute( array($polyItem['sgp_id']) );
$stmt->closeCursor();
unset($stmt);
*/
unset($polyItemKey);
unset($polyItem);
echo ' memory usage: ' . memory_get_usage(). ' bytes'. PHP_EOL;
}
// When running the script, memory usage just keeps increasing.
Expected result:
----------------
I would expect the memory usage of the script to stay constant.
Actual result:
--------------
Memory usage just keeps increasing.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=51796&edit=1
Thread (5 messages)