我有这个脚本输出的RSS feed。 想我想要做的是有它试图达到的RSS网址像5秒上衣,如果它不能然后我希望它加载备份XML文档是在服务器上。 这是我已经和它不工作:
<?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 />';
}
}
?>
我得到一个超时错误,这是所有。 任何有识之士将是巨大的!
有一个更好的解决方案通过@AnthonySterling指出, 在这里 :
function simplexml_load_file_from_url($url, $timeout = 5){
$opts = array('http' => array('timeout' => (int)$timeout));
$context = stream_context_create($opts);
$data = file_get_contents($url, false, $context);
if(!$data){
trigger_error('Cannot load data from url: ' . $url, E_USER_NOTICE);
return false;
}
return simplexml_load_string($data);
}
从php.net :
<?php
$fp = fsockopen("www.example.com", 80);
if (!$fp) {
echo "Unable to open\n";
} else {
fwrite($fp, "GET / HTTP/1.0\r\n\r\n");
stream_set_timeout($fp, 2);
$res = fread($fp, 2000);
$info = stream_get_meta_data($fp); //I think this is what you need.
fclose($fp);
if ($info['timed_out']) { //So you can check this variable.
echo 'Connection timed out!';
} else {
echo $res;
}
}
?>
这是我的工作是什么:
<?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 />';
}
}
?>