0
     <?php
     define(feed,'http://www.example.com/feed/');
     $xml_feed = file_get_contents(feed);
     $xml_parser = xml_parser_create();
     xml_parse_into_struct($xml_parser,$xml_feed,$xml_keys,$xml_index);
     xml_parser_free($xml_parser);
     for($i = 0;!empty($xml_index['TITLE'][$i]);$i++){
     if ($counter < 10)
     {
     echo '<span class="nieuwsfeed">
            <a href="'.$xml_keys[$xml_index['LINK'][$i]]['value'].'" target="blank_">' . date('d-m-Y', strtotime($xml_keys[$xml_index['PUBDATE'][$i]]['value'])) . ' ' . substr($xml_keys[$xml_index['TITLE'][$i]]['value'], 0, 45).'</a></span>';
     $counter++;
     }}
     ?>

.

 $doc = new DOMDocument();
 $doc->load('http://feeds.example.com/example');
 $arrFeeds = array();
 foreach ($doc->getElementsByTagName('item') as $node) {
  $itemRSS = array ( 
   'title' => $node->getElementsByTagName('title')->item(0)->nodeValue,
  'desc' => $node->getElementsByTagName('description')->item(0)->nodeValue,
  'link' => $node->getElementsByTagName('link')->item(0)->nodeValue,
  'date' => $node->getElementsByTagName('pubDate')->item(0)->nodeValue
  );
array_push($arrFeeds, $itemRSS);
 }
 foreach ($arrFeeds as $row)
{
     if ($counter2 < 10)
{
?>

このエラーは、フィードがオフラインのときに表示されます。

      Warning: DOMDocument::load(http://feeds.example.com/example)   
      [domdocument.load]: failed to open stream: Connection timed out in

このスクリプトを使用して、フィードを Web ページで実行できるようにしていますが、フィードがオフラインの場合、フィードを検索するのに約 30 秒から 60 秒かかります。次に、フィードが現在オフラインであることを示す標準画像のみを表示します。

XML フィードの 1 つがオフラインになるのは 1 週間に約 2/3 回なので、Web ページが読み込まれ続けるとかなり面倒です。

4

1 に答える 1

0

file_get_contents()ここで説明されているように、ストリーム コンテキストを使用してタイムアウトを 使用および定義できます

そこの回答から変更されたコード:

<?php
$ctx=stream_context_create(array('http'=>
    array(
        'timeout' => 5 // 5 seconds
    )
));

echo file_get_contents('http://example.com/',false,$ctx);
?>
于 2013-01-15T14:48:03.003 に答える