我正在阅读XML Feed,并希望与旧版本进行比较以检查更新。
我目前的问题是我似乎无法复制SimpleXML对象,另一个问题是我不确定我可以直接比较它们。
这是我的代码。我显然只是测试本地文件,但我打算最终从网上加载。
可以长时间使用睡眠吗?我认为15分钟的间隔通常足以达到我的目的。
error_reporting(E_NOTICE);
$file = 'tmbdata_sm.xml';
$xml_old = "";
while(true){
$xml = simplexml_load_file($file);
if($xml != $xml_old){
foreach($xml->channel->item as $item){
echo $item->title . "\n";
echo $item->link . "\n";
}
$xml_old = clone $xml;
$xml = "";
}else{
echo 'no change';
}
sleep(60);
}
答案 0 :(得分:1)
如果没有定义“更新”在您的上下文中的含义,我担心您的问题可能仍未得到答复。字符串比较可能有效,但更好更快的方法是使用filemtime()
which lets you know the last time that the file was modified。
此外,您应该像在进行无限循环一样避免使用sleep()
。我不认为让PHP无限期运行对您的计算机或服务器来说是健康的。执行此操作的正确方法是在使用UNIX时为cronjob,在Windows中为task scheduler。
答案 1 :(得分:0)
我认为你不能用这种方式比较简单的xml对象。
我会尝试使用您认为合适的任何内容(例如cURL extension)下载xml,然后比较xml文本字符串,然后当您发现它们不同时,使用simplexml_load_string()
进行解析xml文本。