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

Reply via email to