Evet, uzaktan kaynakları ile ilgili ne zaman bir tavsiye biri, kabul edilen bir uygulama daha bulunuyor.
Orada PEAR ve diğer kitaplıkları genel amaçlı önbellek yöneticileri vardır, ama sizin durumda basit bir ev yapımı çözüm sadece de çalışmak. Bunun gibi bir şey:
function get_xml($url, $max_age)
{
$file = '/path/to/cache/dir/' . md5($url);
if (file_exists($file)
&& filemtime($file) >= time() - $max_age)
{
// the cache file exists and is fresh enough
return simplexml_load_file($file);
}
$xml = file_get_contents($url);
file_put_contents($file, $xml);
return simplexml_load_string($xml);
}
Eğer copy() kaynak almak için kullanabilirsiniz, bunu düşünmek gel. Çoğu durumda herhangi bir fark olmaz ama dış kaynak sadece çok büyük olarak gerçekleşmesi eğer PHP'nin bellek yöneticisi biraz daha yumuşaktır. Eğer bellek büyük bir XML yükleme eğer Ama o zaman bile, bunu indirebilirsiniz şekilde daha büyük sorunları var :)
function get_xml($url, $max_age)
{
$file = '/path/to/cache/dir/' . md5($url);
if (!file_exists($file)
|| filemtime($file) < time() - $max_age)
{
// the cache file doesn't exists or is not fresh enough
copy($url, $file);
}
return simplexml_load_file($file);
}
Oh, ve neredeyse unutuyordum. Bunu yapmak için daha iyi, daha kolay bir yolu var bazı cron özelliği erişiminiz varsa. Sadece kayıtsız şartsız o uzak kaynak her 5 veya 10 dakika karşıdan bir cron işi kurmak. Sonra, PHP komut koşulsuz önbellek dosyasından okunur ve tüm uzak kaynak hakkında rahatsız etmeyelim. Bu şekilde, gecikme açısından hiçbir "en kötü durum" senaryosu var. Aksi takdirde, her script o kullanıcının o önbellekten zorlama var ise noticably daha bekleyin yapar, önbelleği yeniler.