PHP çok uzun alarak yükleme XML

3 Cevap php

Ben bir online XML dosyadan bilgi almak için çalışıyorum ve bu bilgileri almak için çok uzun sürüyor. Hatta çoğu kez hata aşımı olsun.

Garip bölüm i tarayıcıda doğrudan link açtığınızda hızlı olmasıdır.

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

3 Cevap

That's because they're blocking depending what browser you're using. Try this:

$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. dosyasında size "Redistribution Prohibited" görebilirsiniz, böylece hava bazı verilerin telif ücretsiz kaynak için bakmak isteyebilirsiniz.

Yukarıdaki kod mükemmel benim için çalışıyor. Farklı bir yerden başka bir xml dosyası (küçük boy) okumaya çalışın.

Benim için bir güvenlik duvarı sorunu gibi görünüyor!

Eğer vartec belirttiği gibi cURL ile sahte kullanıcı aracısı başlıklarını gönderdikten sonra, bu sunucuya XML önbelleğe için iyi bir fikir olabilir. Hava için, belki bir saat iyi bir zaman (RSS daha sık güncellenmesi gerekirse, 15 dakika denemek isteyebilirsiniz, bu oynamak) olacaktır.

Bu sunucuya yerel olarak kaydedildikten sonra, okuma ve XML ayrıştırma çok daha hızlı olacaktır.

RSS devleti yaptığı da akılda tutmak Redistribution Prohibited. IIRC birkaç ücretsiz çevrimiçi hava durumu RSS beslemeleri vardır, belki başka birini denemelisiniz.