我正在尝试在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;
}
答案 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? 您也可以尝试为请求设置超时。
如果您要打开本地文件,该文件有多大?