PHP:file_get_contents挂起在特定的URL上

时间:2013-03-11 20:07:56

标签: php rss simplexml file-get-contents

所以我有一个简单的php文件,它应该读取rss feed的源代码并将其写入SimpleXML对象。我的代码适用于大多数网址。我已经和CNN以及其他几个人一起测试了。但是,URL实际上需要它来处理挂起。我已经与主持内容的公司谈了一下,他们说没有什么特别的,它应该有效。任何人都可以抛出任何想法,为什么特定的URL会挂起? (仅供参考,内容来自Compendium主办的博客)

这是我的代码:

$url = "http://www.example.com/rss?compendium_feed_count=3";
$xml = file_get_contents($url);
print_r($xml);
$xmldoc = new SimpleXMLElement($xml);
print_r($xmldoc);

1 个答案:

答案 0 :(得分:0)

答案结果是因为我试图提取的博客与其来自的主机共享相同的域名。我写的脚本位于example.com上,博客位于example.com/blog。它们是单独的服务器,但显然服务器看到脚本试图访问的URL并且在内部而不是外部查找。如果我把脚本放在不同的主机上进行测试就行了。所以现在我必须弄清楚如何让服务器推出这种请求。

编辑:所以,问题是网络服务器为指向另一台服务器的'/ blog'路径设置了反向代理。我也必须通过代理路由请求。这是这样做的:

$aContext = array('http'=>array('proxy'=>'tcp://client-proxy.exampleproxy.com:80','request_fulluri'=>true));
$url = "http://www.example.com/rss?compendium_feed_count=3";
$cxContext = stream_context_create($aContext);
$xml = file_get_contents($url,FALSE,$cxContext);
$xmldoc = new SimpleXMLElement($xml);