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)
{
?>

当 Feed 处于离线状态时会显示此错误。

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

我使用这个脚本让我的提要在我的网页中运行,但是如果提要离线,它会搜索提要大约 30 秒到 60 秒,有没有人知道我应该如何在 x 秒后禁用加载和然后仅显示一个标准图像,其中显示该提要当前处于脱机状态。

每周大约 2/3 次,其中一个 XML 提要处于离线状态,因此如果您的网页一直在加载,那就很烦人了。

4

1 回答 1

0

您可以使用file_get_contents()流上下文来使用和定义超时,如下所述: Does file_get_contents() has a timeout setting?

从那里的答案修改代码:

<?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 回答