Search code examples
phptimeoutsimplexmltry-catch

Set time out on simplexml_load_file


I have this script which outputs an rss feed. Want I want to do is have it attempt to reach the rss url for something like 5 sec tops, and if it cannot then I want it to load a backup xml doc that is on the server. This is what I have and it is not working:

 <?php

 include '../php/connect.php';
 $metaData = mysql_query("SELECT * FROM `siteinfo`") or die("couln't find table :(");
 $displayData = mysql_fetch_assoc($metaData);
 $url = $displayData['status'];
 $xml = file_get_contents($url);

 stream_set_timeout($xml, 5);

if ($xml == FALSE) {

   $xml = simplexml_load_file('backUpXml.xml');

   foreach ($xml->channel->item as $item) {
      echo '<a href="'.$item->guid.'" alt="'.$item->title.'" target="_blank">',   substr($item->title, 0, 62), '...</a><br /><span>', substr($item->pubDate, 4, 18),'</span><br /><hr /><br />';
   }
}  else {

   $xml = simplexml_load_file($url);

   foreach ($xml->channel->item as $item) {
        echo '<a href="'.$item->guid.'" alt="'.$item->title.'" target="_blank">', substr($item->title, 0, 62), '...</a><br /><span>', substr($item->pubDate, 4, 18),'</span><br /><hr /><br />';
   }
}

 ?>

I am getting a time out error and that is all. Any insight would be great!


Solution

  • This is what I got working:

        <?php
    
         include 'php/connect.php' ;
         $metaData = mysql_query("SELECT * FROM `siteinfo`") or die("couln't find table :(");
         $displayData = mysql_fetch_assoc($metaData);
         $url = $displayData['status'];
         $xml = file_get_contents($url);
    
       if (!$xml) {
    
           $xml = simplexml_load_file('content/backUpXml.xml');
    
           foreach ($xml->channel->item as $item) {
              echo '<a href="'.$item->guid.'" alt="'.$item->title.'" target="_blank">',   substr($item->title, 0, 62), '...</a><br /><span>', substr($item->pubDate, 4, 18),'</span><br /><hr /><br />';
           }
        }  else {
    
           $myFile = "content/backUpXml.xml";
           $fh = fopen($myFile, 'w') or die("can't open file");
           $stringData = $xml;
           fwrite($fh, $stringData);
           fclose($fh);
    
           $xml = simplexml_load_file($url);
    
    
    
           foreach ($xml->channel->item as $item) {
                echo '<a href="'.$item->guid.'" alt="'.$item->title.'" target="_blank">', substr($item->title, 0, 62), '...</a><br /><span>', substr($item->pubDate, 4, 18),'</span><br /><hr /><br />';
           }
        }
    
        ?>