ID: 30911
Updated by: [EMAIL PROTECTED]
Reported By: slaporte at eurocortex dot fr
-Status: Closed
+Status: Wont fix
Bug Type: DOM XML related
Operating System: red hat
PHP Version: 4.3.9
New Comment:
�hm, "Wont fix". Not "Closed" as status..
Previous Comments:
------------------------------------------------------------------------
[2004-11-27 12:05:11] [EMAIL PROTECTED]
There are no destructors called on unset() in PHP 4, as far as I know
(at least not in the dom extension). That's the reason, why the
$doc->free() method was implemented.
I recommend switching to PHP 5, as the problem should be fixed there.
------------------------------------------------------------------------
[2004-11-26 18:29:05] slaporte at eurocortex dot fr
This script is a part of a big script that is parsing 100000 TEXT
fields (read from records in a mysql database)
the fields contains XML.
30 seconds after starting the process it takes 300M in memory then
linux killed the process before it ends.
The memory is then released and available to the system but my process
die before having finished.
Thank you for your help
------------------------------------------------------------------------
[2004-11-26 18:20:14] slaporte at eurocortex dot fr
Thank you for your reply
the script is started using php command line
"php -f test.php"
at the end of the script the php process die and the memory is then
released
------------------------------------------------------------------------
[2004-11-26 18:11:32] [EMAIL PROTECTED]
is the memory released after the request finishes? Or does it stay
there.
------------------------------------------------------------------------
[2004-11-26 15:38:07] slaporte at eurocortex dot fr
Description:
------------
Hello
i'm using php and dom xml
i encounter a memory leak
the destructor of xpath context
is not called
i'm using 4_3_9 version
i put some fprintf(stderr, ...) into the destructor
and it never go inside
the destructor was registered with "xpathcontext"
le_xpathctxp =
zend_register_list_destructors_ex(php_free_xpath_context, NULL,
"xpathcontext", module_number);
the class with "XPathContext"
INIT_OVERLOADED_CLASS_ENTRY(ce, "XPathContext",
php_xpathctx_class_functions, NULL, NULL, NULL);
i try to make both lowercase
but it is changing nothing
the test script is very simple
and when you run it
and the process grow and grow and grow ....
i add a function free to xpathcontext object
that function calls the destructor
then the memory is released
but i would prefer that the destructor be called naturally
Reproduce code:
---------------
function StringToXml($sXml) {
$oDom = domxml_open_mem($sXml);
$oCtx = $oDom->xpath_new_context();
unset($oCtx);
$oDom->free();
unset($oDom);
}
$s = getFile("test.xml");
for($n=200000; $n--;) {
echo "$n<br/>";
flush();
StringToXml($s);
}
Expected result:
----------------
php process should not grow, memory should be released
Actual result:
--------------
php process grow
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=30911&edit=1