โค๊ดที่ต้องการให้อยู่ในรูปของ cache
$sql = "select * from smf_messages inner join smf_topics on smf_messages.id_topic=smf_topics.ID_TOPIC where smf_messages.ID_BOARD=1 group by smf_messages.ID_TOPIC order by smf_messages.ID_TOPIC
โค๊ดที่ต้องการให้อยู่ในรูปของ cache
$sql = "select * from smf_messages inner join smf_topics on smf_messages.id_topic=smf_topics.ID_TOPIC where smf_messages.ID_BOARD=1 group by smf_messages.ID_TOPIC order by smf_messages.ID_TOPIC
Cache ในรูปแบบใดล่ะครับ
ได้หมดครับ ไม่เกี่ยง
ผมเจอในบล๊อกของพี่ไอซ์มาครับ
http://www.icez.net/blog/111/php-simple-object-cache
ลองเอาไปดูครับ ไม่รู้จะถูกใจรึปล่าว
ขอบคุณครับ ลองแล้ว แต่ไม่ได้
ปล่อยของ เป็น file cache ครับ ใช้งานอยู่จริง
จะให้เร็ว cache พวก obj ดีกว่ามากครับ ภาพ ไฟล์ต่างๆ หนะครับ
พวกข้อมูล เล็กๆ น้อยๆ เท่านั้นเอง
ช่วยผมหน่อยครับ
ผมเอาโค๊ดไปใช้แล้วมัน error
แก้ตามนี้ครับ เก็บผลลัพธ์ที่เป็นข้อความ output แล้วเอามาแสดงเลย ไม่ต้องเอา query มาประมวลผล
<?php
require_once 'cache.php';
$cache_interval = 60;
$cache_name = 'smile';
include("connect_smile.php");
$output = Cache::fetch($cache_name, $cache_interval);
if(!$output) {
ขอบคุณครับ
และขอบคุณที่ย้ายมาหมวดนี้ หวังว่าจะมีประโยชน์กับบุคคลอื่นๆด้วยครับ
อีกแนวทางครับ Memcache : )
<?php
$memcache = new Memcache;
$memcache->addServer('127.0.0.1', 11211, true);
$timeout = 300; // 5 นาที
$sql = "select * from smf_messages inner join smf_topics on smf_messages.id_topic=smf_topics.ID_TOPIC where smf_messages.ID_BOARD=1 group by smf_messages.ID_TOPIC order by smf_messages.ID_TOPIC
ลองเปลี่ยนจาก filecache มาเป็น memcache ดูแล้วครับ
เท่าที่สังเกตดูก็เร็วพอๆกัน เดี๋ยวรอดูตอนคนเข้าเยอะๆก่อนว่าจะต่างกันอย่างไร
ขอบคุณทั้ง 2 คนครับผม
+1
ถ้า filecache
ผลการทดลอง จากการเปลี่ยนจาก file มาใช้ mem ตามภาพเลยครับ
โดยรวมแล้วถือว่าทำงานได้เร็วไม่แตกต่างจากเดิม
แต่เจอ bug ใน code ของผมเองแหละ เล่นเอา server โหลดไปเลย
ตอนนี้เลยเอา memcache ออกกลับมาใช้ filecache เหมือนเดิมก่อน
ไม่ใช่ memcache ไม่ดีนะครับ แต่ผมเขียน class แล้วดันมี bug วางยาตัวเอง
ส่วนใหญ่จะ cache เป็น html ไว้ที่ local disk ไปเลย
เวลามีการ request ซ้ำ จะได้ไม่ต้องไป query ใหม่
แต่ไม่ได้ cache ที่ proxy อีกทีนึง เพราะมันก็ไม่มากเท่าไร
ไม่เหมือนพวก images, js, css อะไรพวกนี้
^
^
^
ตอนนี้ผมได้ลองใช้วิธี html ครับผม แต่ใช้วิธีใช้ cronjob gen เป็น html เอา
ทำยังไงหรอครับ
ผมว่าเก็บ data ไว้ใน filecache มันแปลกๆนะครับ
ถ้าเก็บไว้ใน memcache มันก็อยู่ใน memory ซึ่งทำงานได้เร็ว
ถ้าเก็บไว้ใน filecache มันก็อยู่ใน hdd ซึ่งทำให้ช้ากว่า memory
ถึงแม้ว่า web server มันจะ optimize static files ไว้ก็เถอะ
แต่ผมว่า optimize sql code + index น่าจะดีกว่านะครับ
สุดท้ายแล้วมันก็ไปไม่ไหวเหมือนกันครับ การใช้ memcache มีข้อดีที่ผมชอบคือ มัน scale out ได้ง่ายกว่าการ scale out database เยอะเลย แค่ตั้งเครื่องใหม่ แก้ code นิดหน่อยให้เห็นเครื่อง แล้วก็ใช้งานได้เลย ไม่เหมือนพวก database ที่ต้องมานั่งทำ replicate โน้นนี่ สารพัดครับ
สรุปคือ memcache มันก็เหมือนถังที่อยู่ใน memory ที่เอาอะไรไปใส่ไว้ก็ได้ ไม่จำเพาะว่าจะต้องเป็น record database เวลาใช้งานก็แค่ไปหยิบมาเลย ถ้าไม่เจอค่อยไปหาเอาใน database อีกที