2009-03-11 5 views
-1

온라인 XML 파일에서 정보를 검색하려고하는데 정보가 너무 오래 걸립니다. 대부분의 시간 초과 오류가 발생합니다.PHP가 너무 오래 걸리는 XML로드 중

이상한 부분은 바로 브라우저에서 link을 열면 빠릅니다.

$xmlobj = simplexml_load_file("http://apple.accuweather.com/adcbin/apple/Apple_Weather_Data.asp?zipcode=EUR;PT;PO019;REGUA"); 
print header("Content-type: text/plain"); 
print_r($xmlobj); 

답변

2

사용중인 브라우저에 따라 차단되기 때문입니다. 이 시도 :

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_USERAGENT, 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.6) Gecko/2009012700 SUSE/3.0.6-1.4 Firefox/3.0.6');                                  
curl_setopt($curl, CURLOPT_URL,'http://apple.accuweather.com/adcbin/apple/Apple_Weather_Data.asp?zipcode=EUR;PT;PO019;REGUA');    
$xmlstr = curl_exec($curl); 
$xmlobj = simplexml_load_string($xmlstr); 
print header("Content-type: text/plain"); 
print_r($xmlobj); 

을 BTW. 파일에서 "재배포 금지"을 볼 수 있으므로 로열티가없는 날씨 데이터 소스를 찾고 싶을 수 있습니다.

+0

경고에 감사드립니다. –

0

위의 코드는 나를 위해 완벽하게 작동합니다. 다른 위치에서 다른 xml 파일 (작은 크기)을 읽으십시오.

나를 위해 방화벽 문제가있는 것 같습니다.

0

cURL을 사용하여 faux 사용자 에이전트 헤더를 보낸 경우 vartec으로 지적되면 서버에 XML을 캐싱하는 것이 좋습니다. 날씨가 좋으면 1 시간이면 좋은 시간이 될 것입니다 (RSS를 더 자주 업데이트하는 경우 15 분 정도 걸릴 수도 있습니다).

일단 서버에 로컬로 저장되면 XML을 읽고 구문 분석하는 것이 훨씬 빠릅니다.

RSS가 상태를 유지한다는 것을 명심하십시오. 재배포 금지. IIRC 거기에 몇 가지 무료 온라인 날씨 RSS 피드, 그래서 어쩌면 당신은 다른 하나를 시도해야합니다.

관련 문제