PHP Chacing External Data

Okey, dengan selesainya tasking saya hari ini. Saya mau berbagi sekaligus sebagai dokumentasi saya mengenai sesuatu yang membuat saya galau selama beberapa hari ini. Cache, ya, cache.

Sebernernya simple aja sih ini ya, tapi ini penjelasan panjangnya :

Arti Istilah Cache ~ Suatu tempat untuk menyimpan sesuatu secara sementara, mekanisme untuk mempercepat transfer data dengan cara menyimpan data yang telah di akses di suatu buffer, dengan harapan jika data yang sama akan diakses, akses akan menjadi lebih cepat. Dalam Internet sebuah proxy cache dapat mempercepat proses browsing dengan cara menyimpan data yang telah diakses di komputer yang berjarak dekat dengan komputer pengakses. Jika kemudian ada user yang mengakses data yang sama, proxy cache akan mengirim data tersebut dari cache-nya, bukan dari tempat yang lama diakses. Dengan mekanisme HTTP, data yang diberikan oleh proxy selalu data yang terbaru, karena proxy server akan selalu mencocokkan data yang ada di cache-nya dengan data yang ada di server luar.Dalam terminologi hardware, istilah ini biasanya merujuk pada memory berkecepatan tinggi yang menjembatani aliran data antara processor dengan memory utama (RAM) yang biasanya memiliki kecepatan jauh lebih rendah. Penggunaan cache ditujukan untuk meminimalisir terjadinya bottleneck dalam aliran data antara processor dan RAM. Sedangkan dalam terminologi software, istilah ini merujuk pada tempat penyimpanan sementara untuk beberapa file yang sering diakses (biasanya diterapkan dalam network)Berasal dari kata cash, dipergunakan untuk meningkatkan kecepatan transfer data baik secara sementara maupun permanent.

Singkatnya, biar webnya lebih ringan aja, jadi pas pertama ngeload, kita simpen d cache, jadi pas ngeload lagi, datanya kita ambil dari cache, jadi gak realtime. Ini biasanya buat data2 yang jarang berubah2, misalnya, list2 gt, dan biasanya query2nya. seperti yang diterapkan di beberapa web yang saya urus 😀

Lalu, jikalau itu simple, lalu kenapa saya sampai galau ? hingga 3 hari pula? Nah, itu dia, kalo d sini, kebanyakan fungsi2nya itu sudah ada. Pakenya apc_cache, apa itu ya? monggo browsing 😀 Yang bikin galau itu, fungsi yang udah ada gak bisa jalan, setelah saya telusur dengan berbagai alternatif, kmd saya trace dsb, kok masih ndak bisa, nasib deh. Ada juga yang d lokal bisa, ntar setelah q upload ndak bisa jalan, ya kalo ini mungkin settingan d bawah sama d atas beda kan ya. cari2 lagi dan ketemulah kalo , d sini, apc cache nya emang ndak aktif.. oalah nduukk, sakne eram :v nah, setelah ketemu dan mutung, jadi saya buat skrip baru aja. Pake cache biasa aja, jadi kita simpen dalam file.

Ceritanya disini, saya mau nge-cache data external. Jadi pada pada halaman web itu , ada tampilan counter untuk facebook dan twitter. Kalo realtime, harus load dulu dari fb dan twitter kan berat. Jadi disimpen d cache, trs d update setiap 6 jam sekali ;

<?php

	$age=3600; //lifetime cache in seconds ~ 1 jam ini, terserah mau dibuat berapa 😀
	$cacheName= "cache/twitcountde.txt"; //nama file cache, itu aq taruh d dalem folder cache/namacachenya, aq simpen d txt
	if ( !file_exists($cacheName) || (filemtime($cacheName) + $age  <  time() )) { 	
//ini jika file dg nama $cacheName tidak ada ATAU waktu lifetime cache nya abis, jadi dia ngegraph  		$graph = 'http://twitter.com/users/show/lovelycode_'; // url to graph 		
$data	= file_get_contents( $graph ); //get content dari  		
$arr = new SimpleXMLElement ( $data );  		
$count = $arr->followers_count; //ambil jumlah followernya aja 
fwrite(fopen($cacheName, "w"), $count); //ini write ke file cache tadi, isinya $count --> jumlah follower tadi, atau bisa juga kan pake file_pu_contents
	}
	echo " ini jumlah follower twitter"; 
	readfile($cacheName); //ini buat nampilinn hasilnya, bisa juga pake operasi file
	echo "

";
	echo "time+age";
	print(time() + $age); //nyetak time + age nya
	echo "
";
	echo "filemtime";
	print(filemtime($cacheName));  //ini filemtime ini, time pas cache nya d buat

Nah,  penjelasan dikit,logikanya, filemtime kan time saat file cache nya dibuat, time itu waktu realtime saat ini , age itu umurnya. jadi misal filemtimenya pas time 100,  misal agenya 50,  lalu time nya kan jalan, saat time>filemtime+age, artinya time nya udah lebih dari 150,  habis kan lifetime nya? nah, itu ntar dia ngeload lagi.

nah itu saya coba d hosting lokal sudah bisa 😀 selamat mencoba ~~~ 😀