วันจันทร์ที่ 31 สิงหาคม พ.ศ. 2552

php cache อเนกประสงค์ ใช้ได้กับทุกเว็บ

Script php นี้เป็นโค้ดที่ผมพัฒนาขึ้นเพื่อแก้ปัญหา Server Load ที่เคยเกิดขึ้นกับ Web Server ของผมเอง

Script ชุดนี้ใช้กับเพจที่มีความยุ่งยากและเปลืองทรัพยากรในการสร้าง เช่นหน้าที่ต้อง query ข้อมูลจาก MySQL

การทำงานของ Script ชุดนี้คือ เมื่อมีคนเข้ามาใช้บริการครั้งแรก มันจะสร้าง cache file
ที่เก็บหน้าเว็บทั้งหน้าเอาไว้ ส่วนครั้งต่อไปก็จะอ่านไฟล์ที่ cache เอาไว้มาแสดงผล
จนกว่าจะครบ 600 วินาที จึงจะถือว่า cache file เก่าเกินไป ต้องไปสร้างหน้าแรกใหม่

วิธีการนำไปใช้คือ แก้ $tmp_path กับ $lifetime แล้วเอาโค้ดข้างล่างไป Save เป็นไฟล์ชื่อ cache.inc.php



<?
$tmp_path='tmp/mydir/';
$lifetime=600; // 600 seconds.

if ($_GET['nocache']!=1) {
$cache=$tmp_path.substr(md5($_SERVER["REQUEST_URI"]),20);
if (file_exists($cache)) {
if (time()-filemtime($cache) < $lifetime) {
// load cache
$handle=fopen($cache,'r');
while (!feof($handle)) {
echo fgets($handle,1024);
}
fclose($handle);
exit(0);
}
}
$content=file_get_contents('http://'.$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"].'&nocache=1');
file_put_contents($cache,$content);
echo $content;
exit(0);
}
?>

แล้วเพิ่มบรรทัด include ลงไปที่บรรทัดแรกของสคริปต์ที่ต้องการทำ Cache

include("cache.inc.php");

จบแล้วครับ แค่นี้ระบบ cache นี้ก็ทำงานได้แ้ล้ว Server คุณจะเร็วขึ้นทันตาเห็นเลย ขอบอก ^^

ไม่มีความคิดเห็น:

แสดงความคิดเห็น