PHP file_get_contents делает страницу недоступной - PullRequest
1 голос
/ 22 октября 2009

Я пытаюсь использовать file_get_contents в php для отображения RSS-канала. Однако, когда я пытаюсь загрузить страницу, она терпит неудачу (как будто ждет, когда что-то завершится). Если я удаляю код и сохраняю файл снова, страница все равно отказывается работать в течение 5 минут или около того, после чего она возвращается к нормальной работе. Может ли кто-нибудь помочь пролить свет на происходящее? Я использую тот же код на другом сайте, и он отлично работает. Любой совет приветствуется. Спасибо.

   //Displays an xml feed on the page
function display_xml_feed($feed_url, $num_records, $before, $after) {  
      // Get data from feed file
  if(!$response = file_get_contents($feed_url)) {
  return '';
  }

  $xml = simplexml_load_string($response); 
  $count = 0;
  // Browse structure
  foreach($xml->channel->item as $one_item)
  {
    if($count < $num_records)      {
    $html .= $before.'<a href="'.htmlentities($one_item->link).'">'.
    $one_item->title.'</a>'.$after;
    $count++;
    } else {
        break;
    }
  }

   return $html;

}

Ответы [ 3 ]

2 голосов
/ 22 октября 2009

Другие ответы здесь побили меня до первоначальных мыслей (проверка php.ini, очень медленное подключение к серверу каналов), но я заметил кое-что еще. Я кодировщик Javascript с некоторыми знаниями PHP (в основном потому, что синтаксис очень похож). Следующая строка может вызвать проблемы в Javascript, потому что это не правильный синтаксис:

if(!$response = file_get_contents($feed_url)) { 

В PHP это может быть хорошо (если добавить комментарий и я удалю ответ), но в JS вам нужно будет заключить скобки в оператор после !:

if (!($response = file_get_contents($feed_url))) {

Как я уже сказал, это, возможно, даже не стоило упоминать, но вы никогда не знаете.

0 голосов
/ 22 октября 2009

Разрешено ли для параметра allow_url_fopen (php.ini) значение true? Также вы можете попытаться установить тайм-аут для запроса.

Если вы открываете локальный файл, насколько велик этот файл?

0 голосов
/ 22 октября 2009

Вы пытались получить локальный файл? Что делать, если вы попытаетесь получить локальный канал через http://localhost/myfeed.xml?

возможно, file_get_contents занимает много времени, поэтому я рекомендую вам попробовать это.

...