Время отклика file_get_contents и действительного xml - PullRequest
0 голосов
/ 07 ноября 2011

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

<?php
    $homepage = file_get_contents('http://www.forbes.com/news/index.xml');
    $xml = simplexml_load_string($homepage,'SimpleXMLElement', LIBXML_NOCDATA);
    echo '<pre>';
    print_r('$xml');
?>

Но:

 1. How can  I check if `$homepage` contains a valid XML file or not?

2. I'm want to know how much time its taken to call if the url is valid XML file 

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

используя try и catch исключений ..

Ответы [ 2 ]

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

Попробуйте что-то вроде этого

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

$duration = $end - $start;

try {
    libxml_use_internal_errors() ;
    $xml = new SimpleXMLElement($homepage, LIBXML_NOCDATA);
} catch (Exception $ex) {
    // error parsing XML
    throw $ex;
}

Редактировать: Вы даже можете объединить вызовы file_get_contents() и SimpleXMLElement в одну строку, используя

$xml = new SimpleXMLElement('http://www.forbes.com/news/index.xml',
    LIBXML_NOCDATA, true);

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

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

Ниже код будет просто отлично работать.Попробуйте,

<code> $homepage = file_get_contents('http://www.forbes.com/news/index.xml');
 $xml = simplexml_load_string($homepage,'SimpleXMLElement', LIBXML_NOCDATA | LIBXML_NOBLANKS);
 echo  "<pre>";
 print_r($xml);
 echo  "
";

Спасибо.

...