ID:               30911
 User updated by:  slaporte at eurocortex dot fr
 Reported By:      slaporte at eurocortex dot fr
 Status:           Open
 Bug Type:         DOM XML related
 Operating System: red hat
 PHP Version:      4.3.9
 New Comment:

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


Previous Comments:
------------------------------------------------------------------------

[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

Reply via email to