0

这段代码几个月来一直运行良好。输出由几行组成,其中包含给定用户名的统计信息。取html页面的网站没有宕机,页面内容file_get_html也没有变化。突然之间(我检查并没有人修改它)它停止工作。这是相关部分:

[...]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)bool(false)

我有一个类似的脚本,可以解析另一个网站的 html 页面。它也停止了工作。

[...]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 来自 simple_html_dom 而不是来自 php 原生函数)

有什么提示吗?谢谢

4

2 回答 2

1

可能为时已晚,但是:
Simple_html_dom 有一个常量来检查给定的 html 大小 - MAX_FILE_SIZE。默认为 600KB。对于大多数情况来说这已经足够了,但是如果您给定的 html 比这更大,它将失败并返回false并导致该致命错误。

于 2013-06-09T13:54:11.100 回答
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;
}
于 2013-08-28T12:36:07.917 回答