2013-03-11 5 views
0

RSS 피드의 소스를 읽고 SimpleXML 객체에 쓰는 간단한 PHP 파일이 있습니다. 내 코드는 대부분의 URL에서 잘 작동합니다. 나는 CNN과 몇 가지 다른 것들을 테스트했다. 그러나 URL이 실제로 중단되어 작동해야합니다. 콘텐츠를 호스팅하는 회사와 조금 이야기를 나눴습니다. 그들은 특별한 것은 없으며 효과가 있다고 말합니다. 누구든지 특정 URL이 왜 멈추는 지에 대한 아이디어를 던질 수 있습니까? 여기PHP : 특정 URL에 file_get_contents가 있습니다.

(참고로 내용이 일람표에 의해 호스팅 블로그에서 온다) 내 코드입니다 :

$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); 
+2

히트하려는 호스트/URL을 ping/wget 할 수 있습니까? – jchapa

+0

많은 요소가 있으므로 RSS 링크를 공유해야합니다. 그렇지 않으면 우리는 모든 가능성을 쓸 것입니다. – xecute

+0

대신 cURL을 사용하고 리디렉션과 같이 사용할 수있는 옵션 중 일부를 사용하십시오. 이것을 해결할 수있는 가능성은 너무 많습니다. –

답변

0

알고 보니 대답은 때문에이 같은 주 동일한 도메인 이름을에서 끌어 노력하고있어 블로그 호스트가오고있다. 내가 작성한 스크립트는 example.com에 있고 blog는 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); 
관련 문제