Bir web sitesinde bu PHP / XML işlevi uygulamak için ideal bir yolu nedir?

3 Cevap php

Bazı hava durumu verileri kapmak ve web sitemde kullanılabilir hale kadar yazılmış bu kodu vardır:

if( ! $xml = simplexml_load_file('http://www.weather.gov/data/current_obs/KBED.xml') ) 
{ 
    echo 'unable to load XML file'; 
} 
else 
{ 
  $temp = $xml->temp_f.' Degrees';
  $wind = $xml->wind_mph;
  $wind_dir = $xml->wind_dir;
  $gust = $xml->wind_gust_mph;
  $time = $xml->observation_time;
  $pres = $xml->pressure_in;
  $weath = $xml->weather;
}

Ve sonra ben sadece onları içeri istediğiniz etiketleri içinde onları echo. Sitem düşük trafik, ama "en iyi" şekilde ben yol kadar trafik başak olsaydı böyle bir şey yapmak için ne olduğunu merak ediyorum. Ben her seferinde sunucuyu ping kazanmak için bir cron ile bir veritabanına her saat isteyenler değişkenleri (XML yenilenir olduğunda) yazmak, ya da kötü değil uygulamadır mıyım? Ben bu biraz öznel anlıyorum, ama "en iyi yollarından" istemek için başka kimse yok. Teşekkürler!

3 Cevap

  • Periyodik, XML belgesini alıp bunu ayrıştırmak ve bir veritabanında değişkenleri saklamak için bir cron işi kurmak.
  • Bir sayfa istendiğinde, veritabanından değişkenleri alıp sayfanızı oluşturmak.
  • Bu veri bayat olduğunda (hava web sitesi aşağı ya da böyledir çünkü) söyleyebilirim ki, hem de veritabanında son güncelleme damgası saklamak için iyi bir fikirdir.

Bu kurulum bana çok makul görünüyor.

Ben şu öneririm:

  • Ilk xml içeriği olsun, (belki sıralanmış veri yapısının bir parçası olarak) bir şekilde dosyaya bağlı bir zaman damgası ile, bunu ayrıştırmak ve bir dosyaya tefrika

  • Sayfa yüklendiğinde, bu tefrika veri yakala ve zaman damgası kontrol her zaman. Belli bir noktaya geçti eğer, gidip tekrar xml kapmak ve önbelleğe, zaman damgası güncellemek için emin. Aksi takdirde, sadece bu verileri kullanın.

Yani sadece zaman zaman xml almak gitmek zorunda, ve önbellek süresi dolduktan sonra sadece güncellenen beri de, sen (gidiyor ve kimse ziyaret ediyor olsa bile düzenli almanın atık yok demektir, çalışması gerekir Bir istek üzerine).

Sen dış sitenin çıkış önbelleğe ve kendisini her 5-10 saniye söyleyebiliriz yenilemek izin verebilir. Yani sitenizden 'ping' bir çok etkisini öldürür. Bu gerçekten zamanlama doğruluğu müşteri / müşteri için ne kadar önemli bağlıdır.

Bir yüksek trafik durumda ben aa cini veya cron işi çalışır ve hava durumu belirtilen her aralığı getirir ve yapıldığında kamu web sayfasını yazar ayrı bir komut dosyası olurdu. Bu şekilde, bir arka plan görevi tarafından yapılır olarak önbelleğe alma hakkında endişelenmenize gerek yok ettik, ziyaretçilerin sadece web sunucusu statik bir sayfa erişen. Bu da önler veya en azından denklemi içine bir veritabanı dahil etmek ihtiyacı en aza indirir ve oldukça hafif olduğunu.

Olumsuz, başarısızlık ikinci bir nokta oluşturmak yapar ve bilgi sayfası erişimi zaman doğru olması gerekiyorsa oldukça işe yaramaz olabilir.