-- till <[email protected]> wrote
(on Monday, 22 December 2008, 11:14 AM +0100):
> On Mon, Dec 22, 2008 at 10:46 AM, Lossoth <[email protected]> wrote:
> > I'm using Zend_Dom to parse some web pages in a loop
> > The loop is very long (200000 pages)
> > I note that for every cycle the memory used by php grow
> > It seems that Zend_Dom don't release the memory used after any loop
> > The code is similar to this.
> >
> > foreach($urlArray as $url)
> > {
> >    $response = getHTM($url);//simple function using fopen, the problem
> > isn't here
> >    $dom = new Zend_Dom_Query($response);
> >    ...
> >    //do something with a $dom->query
> >
> >    unset($dom);
> > }
> >
> > The memory limit in my php ini is 1GB
> > After 20000 iterations there is an error of out of memory
> >
> > Somebody could help me??
> >
> > Thanks!
> >
> > Marco
> 
> A rough idea would be to implement __destruct which cleans up the object:
> 
> Marco_Dom_Query extends Zend_Dom_Query
> {
>   public function __destruct()
>   {
>     unset($this->_document);
>   }
> }
> 
> Use it just like Zend_Dom_Query, keep unset($dom) in the loop and see
> if this triggers __destruct() and really gets rid off the document you
> added to the object. You could also check if memory_get_usage() grows
> with each loop, or not.

If this *does* work, please put an issue in the tracker, and we'll add
this functionality.

-- 
Matthew Weier O'Phinney
Software Architect       | [email protected]
Zend Framework           | http://framework.zend.com/

Reply via email to