Membuat Cache untuk XML Feed dengan PHP-CLI dan Cron
Fasilitas XML feed mempermudah kita dalam mengambil suatu informasi dari sebuah website secara realtime. Sebagai contoh, kita ingin menampilkan informasi cuaca suatu kota, Yahoo! Weather telah menyediakan XML feed termasuk kota-kota besar di Indonesia.
Ada dua cara untuk membaca xml feed, yang pertama secara realtime dari website sumbernya dan yang kedua membuat cache untuk xml feed itu. Cara pertama memiliki kelemahan, proses eksekusi skrip membutuhkan waktu lebih lama dan setiap kali user mengakses website kita, aplikasi pembaca xml feed mengambil data langsung dari website sumbernya.
Sedangkan cara kedua dengan membuat cache, XML feed dibaca dari sumbernya secara rutin berdasarkan interval waktu dan disimpan dalam cache. Informasi yang akan ditampilkan di halaman web mengambil dari cache tersebut dan proses eksekusi skrip lebih cepat.
Contoh kasus, menampilkan prakiraan cuaca kota Yogyakarta dengan mengambil XML Feed dari Yahoo! Weather. Untuk membuat cache file, menggunakan PHP-CLI ( command line ) dan cron di Linux Server. Dalam tutorial ini saya menjalankan skrip di PHP 5.2.0.
File untuk membaca xml feed dan membuat cache : get_xml.php
// xml feed kota Yogyakarta
$xmlfeed = "http://xml.weather.yahoo.com/forecastrss?p=IDXX0058&u=c";
$handle = fopen( $xmlfeed, “r”);
if ($handle) {
while (!feof($handle)) {
$data = fgets($handle, 4096);
echo $data;
}
fclose($handle);
}
?>
Selanjutnya melalui console, supaya file get_xml.php dapat dieksekusi jalankan perintah :
$bash> chmod 755 get_xml.php
Uji file get_xml.php menggunakan php-cli
$bash > /usr/local/php/bin/php -f ./get_xml.php > file_cache.xml
Cek apakah file_cache.xml menghasilkan output yang sesuai
$bash > cat file_cache.xml
Langkah berikutnya menambahkan perintah di Linux CronJob, menjalankan skrip get_xml.php setiap jam 06:05 atau sesuai kebutuhan anda :
$bash> crontab -e
tambahkan baris :
05 06 * * * /usr/local/php/bin/php -f /lokasi/get_xml.php > /lokasi/file_cache.xml
Langkah terakhir, menampilkan prakiraan cuaca, menggunakan skrip di bawah ini ( simple and dirty way
) :
$handle = fopen("/lokasi/file_cache.xml", "r");
$data = NULL;
if ($handle) {
while (!feof($handle)) {
$data .= fgets($handle, 4096);
}
fclose($handle);
}
preg_match(”@yweather:condition text=\”(.+)\” code=\”(\d+)\” temp=\”(\d+)\”@i”,$data, $cuaca);
echo “Yogyakarta <br />\n”;
echo “Condition : “.$cuaca[0].”<br />\n”;
echo “Temp. : “.$cuaca[2].” C<br /> \n”;
?>

No Comments, Comment or Ping
Reply to “Membuat Cache untuk XML Feed dengan PHP-CLI dan Cron”