Karma olmadan PHP XML karşılaştır

2 Cevap php

Bir XML beslemesini okuyorum ve güncellemeleri kontrol etmek için eski bir sürümüne karşılaştırmak istiyorum.

Şu anda benim sorun ben bir SimpleXML nesnesinin bir kopyasını yapmak gibi olamaz, ve diğer sorun ben onları doğrudan karşılaştırabilirsiniz emin değilim.

Olarak duruyor Bu benim kodudur. Ben tabii ki sadece yerel dosyalar üzerinde test ediyorum, ama ben sonunda web yüklemek niyetinde.

Çok uzun süreler boyunca uyku kullanmak için tamam mı? Ben 15 dakikalık aralık benim amaç için genellikle yeterlidir düşünüyordum.

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);
}

2 Cevap

Ben bu şekilde basit xml nesneleri karşılaştırmak olamaz düşünüyorum.

Ben (demek, cURL extension), sonra da simplexml_load_string() kullanmak, onlar farklı bulmak o zaman xml metin dizeleri karşılaştırmak ve rahat hissediyorum ne olursa olsun kullanarak xml indirmek için çalışacaktı xml metin ayrıştırmak.

"Updated" ne bir tanımı olmadan ben senin soru cevapsız kalabilir korkuyorum sizin bağlamda demektir. Dize karşılaştırma işe yarayabilir, ama daha iyi ve hızlı bir şekilde kullanmak olacaktır filemtime() which lets you know the last time that the file was modified.

Ayrıca sen ne yapıyorsun gibi bir sonsuz döngüye sleep() kullanmaktan kaçınmalıdır. Ben süresiz çalışan PHP sahip bilgisayarınızda veya sunucu için sağlıklı olacağını sanmıyorum. Bunu yapmanın doğru yolu ya bir cronjob UNIX veya task scheduler zaman Windows kullanırken.