0

したがって、RSSフィードのソースを読み取ってSimpleXMLオブジェクトに書き込むことになっている単純なphpファイルがあります。私のコードはほとんどの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);
4

1 に答える 1

0

答えは、私がプルしようとしているブログが、元のホストと同じドメイン名を共有しているためです。私が書いたスクリプトはexample.comにあり、ブログはexample.com/blogにあります。これらは別々のサーバーですが、サーバーはスクリプトがアクセスしようとしているURLを認識し、外部ではなく内部を調べているようです。スクリプトを別のホストに置いてテストすると、正常に機能します。そこで、サーバーにこの種の要求をプッシュさせる方法を理解する必要があります。

編集:したがって、問題は、Webサーバーに別のサーバーを指す「/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);
于 2013-03-11T20:35:01.697 に答える