所以我有一个简单的php文件,应该读取rss提要的源并将其写入SimpleXML对象。我的代码工作得很好与大多数的url。我用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);
答案是,因为博客我试图从共享相同的域名作为主机它来自。我编写的脚本位于example.com,博客位于example.com/blog。它们是独立的服务器,但显然服务器看到脚本试图访问的url,并且正在内部而不是外部寻找。如果我将脚本放在另一台主机上进行测试,它就可以正常工作。所以现在我必须弄清楚如何让服务器将这种请求推送出去。
编辑:所以,问题是,网络服务器有一个反向代理设置为"/博客"路径指向另一个服务器。我还必须通过代理路由请求。它是这样做的:
$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);