PHP file_get_contents导致页面无法访问

时间:2009-10-22 11:12:20

标签: php rss file-get-contents

我正在尝试在php中使用file_get_contents来显示RSS提要。但是,当我尝试加载页面时,它会失败(就像等待某些事情完成一样)。 如果我删除代码并再次保存文件,页面仍然拒绝工作5分钟左右,之后,它恢复正常。 任何人都可以帮助阐明正在发生的事情吗? 我在另一个网站上使用相同的代码,它完美无缺。任何建议表示赞赏感谢。

   //Displays an xml feed on the page
function display_xml_feed($feed_url, $num_records, $before, $after) {  
      // Get data from feed file
  if(!$response = file_get_contents($feed_url)) {
  return '';
  }

  $xml = simplexml_load_string($response); 
  $count = 0;
  // Browse structure
  foreach($xml->channel->item as $one_item)
  {
    if($count < $num_records)      {
    $html .= $before.'<a href="'.htmlentities($one_item->link).'">'.
    $one_item->title.'</a>'.$after;
    $count++;
    } else {
        break;
    }
  }

   return $html;

}

3 个答案:

答案 0 :(得分:2)

这里的其他答案让我想到了我最初的想法(检查php.ini,与Feed服务器的连接非常慢),但我确实注意到了其他一些问题。我是一个具有一些PHP知识的Javascript编码器(主要是因为语法非常相似)。以下行会导致Javascript出现问题,因为它的语法无效:

if(!$response = file_get_contents($feed_url)) { 

它可能在PHP中很好(如果它是添加注释而我将删除答案),但在JS中你需要在!后围绕语句括起括号:

if (!($response = file_get_contents($feed_url))) {

就像我说的那样,它甚至可能没有值得一提,但你永远不会知道。

答案 1 :(得分:0)

您是否尝试获取本地文件? 如果您尝试通过http://localhost/myfeed.xml获取本地Feed,该怎么办?

也许file_get_contents需要花费很多时间,这就是为什么我建议你试试这个。

答案 2 :(得分:0)

allow_url_fopen(php.ini)是否设置为true? 您也可以尝试为请求设置超时。

如果您要打开本地文件,该文件有多大?