หลักการทำงานตามภาพคือ การลดจำนวนครั้งในการเรียกข้อมูลจากฐานข้อมูล เพราะการดึงข้อมูลมาแสดงผลทุก 3 วินาที ถ้ามีคนใช้พร้อมกันจะทำให้เครื่องเซิร์ฟเวอร์ทำงานหนักเกินไป
ตัวอย่างคือ ในหัวข้อหนึ่ง ได้มีคนเข้ามาคอมเมนต์ไป 3 ครั้ง หากเราเข้ามาอ่านก็จะเห็นข้อความอยู่ 3 ข้อความ แต่ในขณะที่อ่านหัวข้อนั้นอยู่ คนที่ 4 อาจจะคอมเมนต์เพิ่มมาแล้วก็ได้ เพื่อให้เราเห็นคอมเมนต์ที่ 4 ในช่วงเวลาที่ใกล้กัน จึงต้องเขียนโปรแกรมให้วนรอบกลับไปทำงานทุก 3 วินาที
ซึ่งงานนี้จะใช้เทคนิค Ajax ร่วมกับ PHP เพื่อดึงข้อมูลจากฐานข้อมูล MySQL ออกมาแสดง
ถ้าดูจากโฟล์วด้านขวา จะเห็นว่าทุกครั้งที่มีการคอมเมนต์ จะมีการสร้างไฟล์ขึ้นมา 1 ไฟล์เพื่อเก็บไอดีล่าสุดของการคอมเมนต์ในหัวข้อนั้นๆ ก่อนที่เราจะไปดึงฐานข้อมูลโดยตรง เราก็เขียนโปรแกรมเช็กก่อนว่า ไอดีล่าสุดที่แสดงอยู่ ณ ขณะนั้น น้อยกว่าไอดี ที่เก็บไว้ในไฟล์นี้หรือไม่
ถ้าน้อยกว่าล่ะก็ แสดงว่ามีคนมาคอมเมนต์เพิ่มเติมแล้ว
นอกจากวิธีเช็กก่อนคิวรี่ฐานข้อมูลแล้ว อีกวิธีหนึ่งที่จะช่วยลดการทำงานของ MySQL และเพิ่มความเร็วให้กับการแสดงผลได้ดียิ่งขึ้น ก็คือ การสร้างเท็กไฟล์ ของคอมเมนต์ชุดนั้นเก็บไว้เลย เมื่อเปิดมาอ่านกระทู้หัวข้อไหน ก็ดึงไฟล์มาแสดงได้ทันที
หมายเหตุ
หากใครสนใจเรื่อง Chat Room ที่คล้ายกับเฟซบุ๊ก แนะนำให้ศึกษา http://nodejs.org/
ศึกษาข้อมูลเพิ่มเติมโดยค้นหาจาก Google.co.th โดยค้นหาด้วยคีย์เวิร์ด " node.js คืออะไร"
--------------------------------------------
ติดตามเรื่องราวการเขียนโปรแกรม PHP ได้ที่
https://www.youtube.com/user/PHPcodingAndDesign/channels
เตรียมตัวก่อนเขียน PHP 5.5
https://www.youtube.com/playlist?list=PLEFxdFJkMLu78rEFPPzkpeieOGEJp730g
แล้วถ้าไม่ คิวรี่ดึง id คอมเม้นสุดท้ายมาเช็คในไฟล์ id ล่าสุดที่เราบันทึกใว้ จะรู้ได้ไงว่า id สุดท้ายคืออะไร หรือว่า คิวรี่ id ทุก 3 วินาทีแบบนี้ก็เท่ากับว่า ดึงข้อมูลทุก 3 วินาทีตลอดเลยไช่มั้ยคับ
ตอบลบ