Hi Ron,

Indeed exception may lead to leaks in certain cases. We do try and cleanup as much as possible but the situation you describe is hard to detect. I will however put it on our TODO list because this case could possibly be improved on.

Andi

At 11:54 AM 8/10/2005 +0200, Ron Korving wrote:
You're right, using that file to create a big piece of data was just for
demonstration purposes. In my personal case it's XML parsing. The way I read
what you just said is that this is behavior by design. But if I don't throw
Exceptions, memory usage stays constant. Throwing and catching these
exceptions are the exception-to-the-rule.

Nonetheless, if this is truly by design.. maybe that's something to look
into for PHP6.

Ron

"Marcus Boerger" <[EMAIL PROTECTED]> schreef in bericht
news:[EMAIL PROTECTED]
> Hello Ron,
>
> Wednesday, August 10, 2005, 8:47:25 AM, you wrote:
>
> > Okay Andi, the script in this message is as simple as it gets. I used a
> > syslog file to create a load of data in this case, but of course you can
use
> > any (text) file for this.
>
> > #!/usr/bin/php5
> > <?
> >   function process()
> >   {
> >     $data = file("/var/log/syslog.0");
>
> >     foreach ($data as $line)
> >       throw new Exception("error");
>
> What makes you think the file would be closed. Erm the array deleted? And
> that is your problem you are unnecessarily reading all the file into an
> array. Try using the same with FileObject instead, which should reduce
> memory usage a lot:
>
> foreach(FileObject($file) as $data) throw new Exception("error");
>
> But of course you only did that to demonstrate the memory problem which in
> fact simply means that we don't do a full stack cleanup like c++ would do
> here (php != c++).
>
> In php we do the cleanup at script termination. That is also the reason
> why php is not perfectly suitable for console apps especially when it
comes
> to daemons.
>
> best regards
> marcus

--
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

Reply via email to