Altınkaynak xml verisi çekme işlemleri
Altınkaynak web sitesi daha önce xml ile sunduğu verileri iptal ederek şimdi yeni soap web servisi ile kullanıcı adı ve şifrelerini vererek soap servisinin hizmete girdiğini duyurdu. Altın fiyatlarını Altınkaynak soap servisinden xml ile çekmek için aşağıdaki php kodlarını kullanacağız.Kullanacağımız metod GetGold.
XML çıktısı veren dosya kodları
Altin_xml.php adlı bir dosya oluşturalım ve kodları yazalım.
<?php
Username = 'AltinkaynakWebServis';
$auth->Password = 'AltinkaynakWebServis';
$header = new SoapHeader('http://data.altinkaynak.com/', 'AuthHeader', $auth, false);
$client->__setSoapHeaders($header);
$veri = $client->GetGold();
$xml = simplexml_load_string($veri->GetGoldResult);
header('Content-type: text/xml');
echo "\n";
echo "";
$xml_yaz .= "
".$xml->Kur[0]->Kod."
".$xml->Kur[0]->Alis."
".$xml->Kur[0]->Satis."
\n
".$xml->Kur[1]->Kod."
".$xml->Kur[1]->Alis."
".$xml->Kur[1]->Satis."
\n
".$xml->Kur[2]->Kod."
".$xml->Kur[2]->Alis."
".$xml->Kur[2]->Satis."
\n
".$xml->Kur[3]->Kod."
".$xml->Kur[3]->Alis."
".$xml->Kur[3]->Satis."
\n
".$xml->Kur[4]->Kod."
".$xml->Kur[4]->Alis."
".$xml->Kur[4]->Satis."
\n
".$xml->Kur[5]->Kod."
".$xml->Kur[5]->Alis."
".$xml->Kur[5]->Satis."
\n
".$xml->Kur[6]->Kod."
".$xml->Kur[6]->Alis."
".$xml->Kur[6]->Satis."
\n
".$xml->Kur[7]->Kod."
".$xml->Kur[7]->Alis."
".$xml->Kur[7]->Satis."
\n
".$xml->Kur[8]->Kod."
".$xml->Kur[8]->Alis."
".$xml->Kur[8]->Satis."
\n
".$xml->Kur[9]->Kod."
".$xml->Kur[9]->Alis."
".$xml->Kur[9]->Satis."
\n
".$xml->Kur[10]->Kod."
".$xml->Kur[10]->Alis."
".$xml->Kur[10]->Satis."
\n
".$xml->Kur[11]->Kod."
".$xml->Kur[11]->Alis."
".$xml->Kur[11]->Satis."
\n
".$xml->Kur[12]->Kod."
".$xml->Kur[12]->Alis."
".$xml->Kur[12]->Satis."
\n
".$xml->Kur[13]->Kod."
".$xml->Kur[13]->Alis."
".$xml->Kur[13]->Satis."
\n
".$xml->Kur[14]->Kod."
".$xml->Kur[14]->Alis."
".$xml->Kur[14]->Satis."
\n
".$xml->Kur[15]->Kod."
".$xml->Kur[15]->Alis."
".$xml->Kur[15]->Satis."
\n";
;
$xml_yaz .= "\n";
echo $xml_yaz;
?>
Bu dosyanın çıktısı xml fiyat sayfasıdır. Aslında önerilen şey her seferinde bu dosyayı çağırmak yerine yerel olarak verilerin belleğe alınmasıdır. Bu da sitenin erişim hızını artıracaktır.Bunu için aşağıdaki kodları kullanabiliriz.
XML dosyasını önbelleğe alıp işleme
<?php
$saatg = date("G");
$bugun = date("z");
$dun = date("z") - 1;
$guncelleme = 3600*12; // 24 saat
$cache_altin = $_SERVER['DOCUMENT_ROOT'].'/dosya-yolu/altinkur'.$saatg.$bugun.'.rss';
$timedif_altin = @(time() - filemtime($cache_altin));
if (file_exists($cache_altin) && $timedif_altin < $guncelleme) {
$string_altin = file_get_contents($cache_altin);
} else {
$string_altin = file_get_contents('http://domain.com/Altin_xml.php');
if ($af = @fopen($cache_altin, 'w')) {
fwrite ($af, $string_altin, strlen($string_altin));
fclose($af);
}
}
$xml_altin = simplexml_load_string($string_altin);
$altin22a = $xml_altin->KUR[5]->ALIS;
$altin22s = $xml_altin->KUR[5]->SATIS;
$altinataa = $xml_altin->KUR[12]->ALIS;
$altinatas = $xml_altin->KUR[12]->SATIS;
$altincea = $xml_altin->KUR[8]->ALIS;
$altinces = $xml_altin->KUR[8]->SATIS;
$altinyaa = $xml_altin->KUR[9]->ALIS;
$altinyas = $xml_altin->KUR[9]->SATIS;
$altintaa = $xml_altin->KUR[10]->ALIS;
$altintas = $xml_altin->KUR[10]->SATIS;
$altinhasa = $xml_altin->KUR[15]->ALIS;
$altinhass = $xml_altin->KUR[15]->SATIS;
?>
Burada yaptığımız sorguyu yerel serverda bir rss dosyası olarak kaydettik.Bundan sonraki sorgulamalarda yerel dosya kullanılacak, bu da hız demek.Kodlara bu dosyanın hangi aralıklarla ve hangi isimle yazılacağını istediğimiz gibi ekliyoruz.
Bu yararlı paylaşımınız için teşekkürler