Can you send a complete script which also passes $data that reproduces the
problem? Thanks.
At 05:27 PM 8/9/2005 +0200, Ron Korving wrote:
The problem occurs in this particular situation:
public function process($data)
{
$largeResultSet = $this->xmlParser->parseString($data);
foreach ($largeResultSet as &$item)
{
throw new Exception("error");
}
}
It only happens if the exception is thrown from within the foreach(). It
seems the $largeResultSet is not freed in this case. Using the foreach by
reference or not (&$item or $item) does not make a difference.
Ron
""Ron Korving"" <[EMAIL PROTECTED]> schreef in bericht
news:[EMAIL PROTECTED]
> It is very likely that this has something to do with DOM. It's a huge
piece
> of code though, making it hard to test where the problem really lies.
>
> ""Ron Korving"" <[EMAIL PROTECTED]> schreef in bericht
> news:[EMAIL PROTECTED]
> > I've noticed that in a script of mine, memory consumption can explode
> quite
> > drastically when Exceptions are thrown, opposed to very normal memory
> > consumption when exceptions are not thrown.
> >
> > This is the idea:
> >
> > <?
> > class Obj
> > {
> > function process($i)
> > {
> > // do a lot of stuff, occupy a lot of memory within the scope of
this
> > function
> > throw new Exception("error");
> > }
> > }
> >
> > $obj = new Obj();
> > $errors = array();
> >
> > for ($i=0; $i < 60; $i++)
> > {
> > try
> > {
> > $obj->process();
> > }
> > catch (Exception $e)
> > {
> > $errors[] = $e->getMessage();
> > }
> > }
> > ?>
> >
> > When exceptions are not thrown, memory consumption is normal. The
method's
> > local vars are freed and not much more memory is used in the 50th pass
> > compared to the 1st. But when exceptions are thrown, memory consumption
> > increases quite a bit every pass. In the end (within the 60 passes of my
> > loop) over 8 MB's are used.
> >
> > Of course, I can unset a lot of data before throwing exceptions to free
up
> > memory and the problem will be solved. But it would be nicer if the
> cleanup
> > would happen as an exception is thrown.
> >
> > Can this be considered a bug or is this behavior known and accepted?
> >
> > Ron
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php
--
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php