Tengo este script que genera un feed rss. Lo que quiero hacer es intentar que llegue a la URL de rss para algo así como 5 segundos como máximo, y si no puede, entonces quiero que cargue un documento de copia de seguridad xml que esté en el servidor. Esto es lo que tengo y no está funcionando:Establecer el tiempo de espera en simplexml_load_file
<?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 />';
}
}
?>
Recibo un error de tiempo de espera y eso es todo. ¡Cualquier idea sería genial!
Corregida creación del contexto . Lamentablemente, ya no tengo ningún tiempo de espera, ¿hay un sitio de prueba que simplemente hace un tiempo de espera largo? – Daniel
Entendido, puedes probar el código llamando a un php que contiene un comando 'sleep (45);'. – Daniel
Para tener en cuenta también el tiempo de espera del socket, hay una variable para establecer el valor deseado: 'ini_set ('default_socket_timeout', 5);' Más información [aquí] (http://stackoverflow.com/a/10236480) – jap1968