загрузка XML с PHP занимает слишком много времени - PullRequest
0 голосов
/ 11 марта 2009

Я пытаюсь получить информацию из онлайн-файла XML, и получение этой информации занимает слишком много времени. В большинстве случаев это даже ошибка тайм-аута.

Странная часть в том, что когда я открываю ссылку прямо в браузере, это быстро.

$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 ]

2 голосов
/ 11 марта 2009

Это потому, что они блокируются в зависимости от того, какой браузер вы используете. Попробуйте это:

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

КСТАТИ. в файле вы можете увидеть «Перераспределение запрещено» , так что вы можете искать какой-либо бесплатный источник данных о погоде.

0 голосов
/ 12 марта 2009

После того, как вы отправили заголовки ложного агента пользователя с помощью cURL, как указано vartec , возможно, будет хорошей идеей кэшировать XML на ваш сервер. Для погоды, может быть, час будет хорошим временем (поиграйте с этим, если RSS обновляется чаще, вы можете попробовать 15 минут).

Как только он будет сохранен локально на вашем сервере, его чтение и анализ XML будут намного быстрее.

Имейте в виду, что в RSS указано Перераспределение запрещено . Во IIRC есть несколько бесплатных новостных RSS-каналов о погоде, поэтому, возможно, вам стоит попробовать другой.

0 голосов
/ 11 марта 2009

Приведенный выше код прекрасно работает для меня. Попробуйте прочитать другой XML-файл (небольшого размера) из другого места.

Похоже, проблема с брандмауэром для меня!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...