1

我正在尝试在 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;

}
4

3 回答 3

2

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

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

在 PHP 中可能没问题(如果添加评论,我会删除答案),但在 JS 中,您需要在语句之后用大括号括起来!

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

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

于 2009-10-22T11:34:23.757 回答
0

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

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

于 2009-10-22T11:26:58.157 回答
0

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

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

于 2009-10-22T11:27:18.810 回答