Ben de birkaç sitede, kendi sitem wolkanca.com için ve ara.wolkanca.com da SimplePie kullanıyorum.
Burayı okuyanlar arasında belki bilenler vardır ben WordPress üzerinde başkasının yazdığı bir eklentiyi mutlaka alır bozar tekrar kendim yazarım öyle kullanırım sitelerde, bu benim prensibim, veya hiç kullanmam kendim yazarım bu sayede sitelerin kontrolü hep bendedir ciğerini bilirim sitenin benden habersiz tek bir sinek uçamaz yaptığım WordPress sitelerinde.
Aslında WordPress’in de içinde SimplePie var fakat WordPress in SimplePie uygulaması fetch feed fonksiyonu önbelleği veritabanına aldığı için onu kullanmayı ben büyük sitelere tavsiye etmiyorum, kendi SimplePie uygulamanızı kendiniz kurar kullanırsanız önbelleği disk üzerine alma şansınız var.
WordPress’in fetch feed fonksiyonu hakkında bilgi için: http://codex.wordpress.org/Function_Reference/fetch_feed.
İsterseniz önce WordPress üzerinde ayrı, bağımsız bir SimplePie nasıl kullanacağınızı tarif etmeye çalışayım. Normalde WordPress’de bir rss feed akışını site üzerinde göstermek için örnek kod aşağıdaki gibi:
<?php include_once(ABSPATH . WPINC . '/feed.php');
$rss = fetch_feed('http://feed.adresi.com/feed');
if (!is_wp_error( $rss ) ) :
$maxitems = $rss->get_item_quantity(5);
$rss_items = $rss->get_items(0, $maxitems);
endif;
?>
<ul>
<?php if ($maxitems == 0) echo '<li>No items.</li>';
else
foreach ( $rss_items as $item ): ?>
<li>
<a href='<?php echo $item->get_permalink(); ?>' title='<?php echo 'Posted '.$item->get_date('j F Y | g:i a'); ?>'> <?php echo $item->get_title(); ?></a>
</li>
<?php endforeach; ?>
</ul>
WordPress’in feed.php üzerinden fonksiyonunu kullanırsanız önbelleği veritabanına alıyor, WordPress sitenizin veritabanında options tablosunda _transient_feed_5704dcaba238f46f1ca3c45431fa41b0 gibi isimli satırlar buna aittir.
Veritabanını yormadan disk üzerine almak için ihtiyacımız olan şey sadece bir adet simplepie.inc dosyası. SimplePie sitesine gidip SimplePie indirdiğinizde arşivin içinden birçok dosya ve birkaç klasör çıkar, bunlardan bizim için temel olarak gerekli olan dosya sadece simplepie.inc isimli dosyadır. Bu adresten son versiyonu indirebilirsiniz: http://github.com/rmccue/simplepie/downloads
simplepie.inc dosyasını ftp aracılıyla sitenin ana dizinine gönderin, ardından yine aynı dizine cache isimli bir yeni klasör/dizin oluşturun bu cache klasörü SimplePie önbelleği olacak. Aksi belirtilmedikçe varsayılan olarak önbellek oluşturulan yer simplepie.inc dosyasının bulunduğu dizinde bulunan cache klasörüdür.
Şimdi örnek bir SimplePie fonksiyonu yazalım;
<ul>
<?php
include_once('./simplepie.inc'); //sitenin ana dizinine simplepie.inc dosyası koyduk.
$feed = new SimplePie();
$feed->set_feed_url('http://feeds.wolkanca.com/blogwolkanca'); //gösterilecek rss adresi.
$feed->set_cache_duration(43200); //milisaniye veya iptal -> $feed->enable_cache(false);
$feed->init();
$feed->handle_content_type();
$limit = $feed->get_item_quantity(10); // kaç adet gösterilecek?
$items = $feed->get_items(0, $limit); // ilk elementden başlasın için 0, değere göre sıra atlar.
if ($limit == 0) echo '<div>....</div>';
else
foreach ($items as $item ): ?>
<li><?php echo '<a href="' . $item->get_permalink() . '" title="' . $item->get_title() . '">' . $item->get_title() . '</a> ';?></li>
<?php endforeach; ?>
</ul>
SimplePie hakkında daha fazla bilgi ve döküman kendi sitesinde bulunan wiki de var http://simplepie.org/wiki/.
Şimdi SimplePie’nin aldığı önbelleği zamanından silmek istediğimizde, silmemiz gerektiğinde yapacağımız şeye değinelim. Normal şartlarda ftp den ulaşıp elle temizleme de yapılabilir ama çok fazla ise önbellek bu çok zahmetli iş, önbelleği silmek için aşağıdaki uygulamayı kullanabilirsiniz;
<?php
define('PATH', '/home/psps54/site.com/cache/'); //bu önbellek klasörü yolu.
function destroy($dir) {
$mydir = opendir($dir);
while(false !== ($file = readdir($mydir))) {
if($file != "." && $file != "..") {
chmod($dir.$file, 0777);
if(is_dir($dir.$file)) {
chdir('.');
echo "deleting " . $dir.$file;
destroy($dir.$file.'/');
rmdir($dir.$file) or DIE("couldn't delete $dir$file<br />");
}
else
echo "deleting " . $dir.$file;
unlink($dir.$file) or DIE("couldn't delete $dir$file<br />");
}
}
closedir($mydir);
}
destroy(PATH);
echo ’yukaridakilerin hepsi silindi.'; //silindi mesajı
?>
Yukarıdaki kodları örneğin cachesil.php olarak kaydedip ftp den sitenize gönderin, daha sonra siteniz.com/cachesil.php adresini ziyaret ettiğinizde SimplePie önbelleği komple silinecektir. Bunu WordPress’de veya cpanelş vs. da cron a da bağlayabilir belli sürelerde çalışmasını sağlayabilirsiniz. Tamamen yaratıcılığınıza kalmış işin temelleri bunlar ve zaten sıradan bir blogger için pek gerekmeyecek şeyler, bu bilgilerin faydalı olabileceğini düşündüğüm kişiler konuyu çok seveceklerdir.
Hayırlı olsun şimdi WordPress sitesinin Mysql sunucusu üzerinden bir yükü de almış oldunuz.