PHP simple html dom: apache crashes

纵饮孤独 提交于 2020-01-06 15:42:30

问题


I'm using Simple HTML Dom. I'm trying to run the following: (with WAMP)

$doc = file_get_html('http://www.scoop.it/t/curate-your-personal-learning-environment?page=3');
$comments = array();
$CommentList = $doc->find('#commentList div[class=commentContainer]');
if (count($CommentList) > 0)
    var_dump($CommentList);
foreach ($CommentList as $comment)
{
    $text = $comment->find('span[class^=author]');
    $comments[] = $this::ctrim($text[0]->innertext);
}

If I comment out the foreach loop, it runs fine. Otherwise, the apache crashes.

One important note: If I comment out the inside of the foreach loop, it still crashes. I added the var dump to make sure that the array has valid items.

EDIT:

Apache logs:

[Tue Jul 10 16:53:53 2012] [notice] Parent: child process exited with status 255 -- Restarting.
[Tue Jul 10 16:53:53 2012] [notice] Apache/2.2.22 (Win64) PHP/5.3.13 configured -- resuming normal operations
[Tue Jul 10 16:53:53 2012] [notice] Server built: May 13 2012 19:41:17
[Tue Jul 10 16:53:53 2012] [notice] Parent: Created child process 5568
[Tue Jul 10 16:53:53 2012] [notice] Child 5568: Child process is running
[Tue Jul 10 16:53:53 2012] [notice] Child 5568: Acquired the start mutex.
[Tue Jul 10 16:53:53 2012] [notice] Child 5568: Starting 64 worker threads.
[Tue Jul 10 16:53:53 2012] [notice] Child 5568: Starting thread to listen on port 80.
[Tue Jul 10 16:53:53 2012] [notice] Child 5568: Starting thread to listen on port 80.

回答1:


this might be a memory leak:
since your apache says:

child process exited with status 255

see here:
PHP Out of Memory - Crashes Apache?

Due to php5 circular references memory leak, after creating DOM object, you must call $dom->clear() to free memory if call file_get_dom() more then once.

from here: http://simplehtmldom.sourceforge.net/manual_faq.htm#memory_leak




回答2:


Try to change

$this::ctrim($text[0]->innertext);

to

self::ctrim($text[0]->innertext);

or

$this->ctrim($text[0]->innertext);

$obj->method is an instance call. Class::method is an static call. $this::method does probably something weird...



来源:https://stackoverflow.com/questions/11413392/php-simple-html-dom-apache-crashes

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!