2013-02-02 4 views
0

이 코드는 몇 달 동안 잘 작동 해 왔습니다. 출력은 주어진 사용자 이름에 대한 통계를 포함하는 몇 줄로 구성됩니다. html 페이지를 가져온 웹 사이트는 다운되지 않으며 file_get_html에있는 페이지의 내용은 변경되지 않았습니다. 갑자기 (내가 확인하고 아무도 수정하지 않았다) 작동을 멈췄다. 여기에 관련 부분입니다 :simple_html_dom : 객체가 아닌 객체에서 find() 함수 호출

[...]if ($FileAge > ($expiretime * 60) || 0 == filesize($cachename)) 
{ 
    include_once('simple_html_dom.php'); 
    $html = file_get_html('http://www.foo.com/search?what=user%3A'.YOUR_USER.'&search=Search'); 
    var_dump($html); //TEST 
    $link = $html->find('.likeh4 lightGrey.', 0)->find('a', 0)->href; // Get the last activity link 
[...] 

오류 로그는 말한다 :

[02-Feb-2013 17:02:19 Europe/Berlin] PHP Fatal error: Call to a member function find() on a non-object in /foo.php on line 22 (the line with $link). 

var_dump($html) 내가 다른 웹 사이트에서 HTML 페이지를 구문 분석 유사한 스크립트가 bool(false)

을 제공합니다. 그것도 잘 작동하지 않았다.

[...]include_once('simple_html_dom.php'); 
$html = file_get_html('http://my.flightmemory.com/'.FLIGHTMEMORY_USER); 
$chilometri_table = $html->find('table', 2); [...] 

내 웹 서버에 HTML 페이지 중 하나를 저장하려고 시도했지만 이러한 오류가 발생하지 않았습니다. 내 호스트가 보안상의 이유로 일부 php 기능을 비활성화 했습니까? (실제로 file_get_html은 PHP 기본 기능이 아니라 simple_html_dom에서 가져온 것입니다.)

힌트가 있습니까? 감사

답변

1

그것은 너무 늦게 아마도하지만 - MAX_FILE_SIZE
Simple_html_dom 주어진 HTML 크기를 확인하기 위해 일정한 있습니다. 기본적으로 600KB입니다. 대부분의 경우 충분하지만 주어진 html이 그보다 크면 실패하고 false을 반환하며 치명적인 오류가 발생합니다.

0

[href] 을 얻으려고하면 같은 문제가 발생하여 고칠 수 있습니다. 필요 유효 그것은 simple_html_dom_node

if(is_a($html->find('.likeh4 lightGrey. a', 0),'simple_html_dom_node') 
    $link = $html->find('.likeh4 lightGrey. a', 0)->href; 

또는

foreach ($$html->find('.likeh4 lightGrey. a') as $links) { 
$link =$links->href; 
} 
입니다
관련 문제