проверьте действительный XML, а затем время отклика RSS-канал - PullRequest
1 голос
/ 07 ноября 2011

Я читаю RSS-ленту и проверяю, я хочу знать, сколько времени уходит на вызов

    $homepage = file_get_contents('http://www.forbes.com/news/index.xml');

, для этого я использую

 <?php

$start = microtime(true);
$homepage = file_get_contents('http://www.fohgggrbes.com/news/index.xml');
 $end = microtime(true);
 $dur=$end-$start;
 echo $dur;
  $xml = simplexml_load_string($homepage,'SimpleXMLElement', LIBXML_NOCDATA);
  echo '<pre>';
?>

, носначала я проверяю, является ли файл действительным xml, если он есть, то показывает время отклика

 $homepage = file_get_contents('http://www.forbes.com/news/index.xml');

или, если файл XML недействителен, отображается сообщение об ошибке.Я хочу использовать попытку и ловить исключения.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

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

Не удалось открыть поток: php_network_getaddresses: сбой getaddrinfo

Однако эта ошибка связана с потокомобертка, в то время как любая проверка XML выполняется после этого libxml.Следовательно, вам нужно проверить две разные вещи.Приведенный ниже код будет учитывать оба:

libxml_use_internal_errors(true);
$start = microtime(true);
$rss = @simplexml_load_file(
    'http://www.fohgggrbes.com/news/index.xml',
    'SimpleXMLElement',
    LIBXML_NOCDATA
);
$end = microtime(true);
$errors = array_filter(
    array(error_get_last(), libxml_get_errors()),
    function($val) { return !empty($val); }
);
print_r(empty($errors) ? $end - $start : $errors);
libxml_use_internal_errors(false);

Я оставляю за вами возможность заключить это в класс и выбросить исключения, если вы хотите использовать try / catch.

0 голосов
/ 07 ноября 2011

Я полагаю, что вы всегда можете отправить полученные данные в валидатор канала W3C (http://validator.w3.org/feed/) с CURL, как только вы их загрузите, или отправить URL-адрес валидатору (что, вероятно, является лучшим подходом, поскольку вы меньше двигаетесь) данных), но обработка возвращаемых результатов может быть сложной (результаты представляют собой HTML-документ, который должен быть удобочитаемым, а не машиночитаемым).

...