PHP file_get_contents бросает "не удалось открыть поток: HTTP-запрос не выполнен!"в течение 5-10 секунд при доступе к большому XML-файлу - PullRequest
1 голос
/ 28 января 2012

Я пытаюсь загрузить файл ("http://feeds.artistdata.com/xml.shows/artist/AR-YX458DZO75EQACZ3/xml") с file_get_contents, но я получаю сообщение об ошибке в течение 5-10 секунд. XML-файл прекрасно загружается в браузере, и если я использую уменьшенную версию из этого (добавление "/ future" в конце вышеупомянутого URL) он прекрасно загружается с file_get_contents.

Сценарий:

$file = "http://feeds.artistdata.com/xml.shows/artist/AR-YX458DZO75EQACZ3/xml";
$data = file_get_contents($file);

Появляется одна из двух ошибок:

Warning: file_get_contents("http://feeds.artistdata.com/xml.shows/artist/AR-YX458DZO75EQACZ3/xml") [function.file-get-contents]: failed to open stream: HTTP request failed! in MY_PHP_SCRIPT.php on line 2

Или:

Warning: file_get_contents("http://feeds.artistdata.com/xml.shows/artist/AR-YX458DZO75EQACZ3/xml") [function.file-get-contents]: failed to open stream: Connection timed out  in MY_PHP_SCRIPT.php on line 2

Есть идеи? Я попытался , используя вместо этого cURL, но когда я это сделал, я просто получил "Ошибка в строке 1". Ошибка появляется менее чем за 10 секунд, поэтому я не могу представить, что это проблема тайм-аута, так как эти значения по умолчанию обычно составляют 15 секунд или 30 секунд в зависимости от приложения.

Ответы [ 2 ]

0 голосов
/ 28 января 2012
  1. file_get_contents () возвращает файл в строке, начиная с указанного смещения до макс. Байтов

  2. Ошибка уровня E_WARNING генерируется, если любая из значений maxlength равнаменьше нуля или если смещение превышает длину потока.

0 голосов
/ 28 января 2012

// используйте это для того, чтобы ваш xml-канал работал нормально

$ load = file_get_contents ('http://artistdata.sonicbids.com/ari-herstand/shows/xml/');

print_r ($ load);

...