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