ข้ามไปที่เนื้อหาหลัก

บทความ

กำลังแสดงโพสต์จาก สิงหาคม, 2013

ออกแบบ Code เพื่อลดภาระของเซิร์ฟเวอร์

แนวคิดนี้เกิดขึ้นในระหว่างที่ผมเรียนรู้การเขียนโปรแกรม PHP โดยเน้นใช้งาน Array เพื่อลดการใช้ทรัพยากรของ MySQL เพราะบางขั้นตอน เราสามารถเก็บข้อมูลไว้ในอาร์เรย์แล้วเรียกใช้งานจะเร็วกว่าการเรียกจากฐานข้อมูลเป็นครั้งๆ เมื่อใช้ Array มากๆ บางครั้งก็เปลืองหน่วยความจำ จึงเป็นเรื่องที่ต้องให้ความสำคัญทีเดียว การเขียนโค๊ด PHP เพื่อสั่ง MySQL คิวรี่หลายๆครั้งจะใช้ CPU มาก แต่การคิวรี่น้อยครั้งแล้วเก็บไว้ใน Array จะใช้หน่วยความจำมากเช่นกัน ดังนั้นคงต้องมองไปที่เซิร์ฟเวอร์ว่า ระหว่าง RAM กับ CPU อันไหนมีจำกัดกว่ากัน  ถ้าสามารถใช้ RAM ได้เหลือเฟือก็คงใช้ Array เก็บข้อมูลมากๆ ได้สบายๆ หรือถ้าไม่จำกัด CPU ปล่อยใช้เต็มที่แล้วล่ะก็จะเขียนโปรแกรมสั่งให้ MySQL คิวรี่กี่ครั้งก็ได้แล้วแต่คุณเลยละกัน แต่โดยส่วนใหญ่ถ้าใช้งานบนเว็บโฮสติ้ง เขาจะจำกัดการใช้งาน CPU ไว้ หากระบบของเราใช้สูงเกินไป ก็จะมีอีเมลมาแจ้งเตือน และถ้าระบบของเราใช้เกินขีดจำกัดก็อาจจะถูกบล็อคการใช้งานไปเลย ต้องเสียเวลาเจรจาต่อรองกันอีกยาว เริ่มจากแนวคิดเรื่อง  "แบ่งภาระงานให้กับสคริปต์แต่ละตัวอย่างไรดี"

โค๊ดตัวอย่างการทำ Autocomplete แบบลดจำนวนการคิวรี่ MySQL

จากบทความที่แล้ว  หลักการเขียน PHP Autocomplete ด้วย jQuery ในรูปแบบ JSON  วันนี้จะมานำเสนอวิธีการเขียนโค๊ด Autocomplete ด้วย jQuery เป็นตัวอย่างสำหรับการทำงานด้วยแนวคิดที่ว่านี้ แล้วลองประยุกต์กันดูนะครับ ในบทความนี้จะพูดถึงอะไรบ้าง ก็จะมีการเขียนโค๊ด PHP  เพื่อเรียกข้อมูลจากฐานข้อมูล MySQL แล้วเขียนเป็นไฟล์ JavaScript เพื่อเรียกใช้ด้วย Autocomplete ด้วย jQuery อีกที จากซอร์สโค๊ดจะเห็นว่า PHP จะสั่งคิวรี่เพียงครั้งเดียว และเมื่อพิมพ์รายชื่อ จะสามารถแสดง Autocomplete ขึ้นมาให้เลือกได้โดยไม่ต้องส่งค่าไปมาด้วย Ajax อีก ซึ่งประหยัดทั้งแบนวิธด์ และการทำงานของ MySQL ที่ใช้ CPU ที่เกินจำเป็นได้อีกด้วย แต่ถ้าจะให้ดีก็ไม่ต้องคิวรี่ครับ (ดึงไฟล์ที่ได้สร้างเป็น *.js ไว้แล้วมาใช้เลยจะดีที่สุด ^_^ )

หลักการเขียน PHP Autocomplete ด้วย jQuery ในรูปแบบ JSON

       จากที่เคยนำเสนอบทความเกี่ยวกับการคิวรี่ข้อมูลจากฐานข้อมูลมาเก็บไว้ในตัวแปรอาร์เรย์แบบสองมิติ และเรียกใช้โดยการอ้างอิงคีย์ของแต่ละตารางไปแล้ว วันนี้จะนำเสนอเทคนิคการคิวรี่แบบประหยัดอีกวิธีสำหรับใครที่ชอบใช้ Autocomplete เพื่อเรียกข้อมูลมาแสดงให้ผู้ใช้งานสะดวกในการคีย์ข้อมูล        แต่กรณีผู้ใช้งานในขณะนั้นมีหลายคนทำรายการพร้อมกัน การทำงานของแต่ละคนก็คิวรี่หลายครั้ง ในแต่ละวันลองคิดดูครับว่าเซิร์ฟเวอร์จะทำงานหนักขนาดไหน เช่น พอเราป้อนชื่อลูกค้ามากกว่าสองคำ ก็จะมีการดึงข้อมูลลูกค้าที่คล้ายกันมาแสดง พอพิมพ์ไปอีกเป็นสามคำก็จะเรียกอีกครั้ง พอเพิ่มหรือลบคำออกก็จะคิวรี่ทุกๆ ครั้ง ที่มีการเปลี่ยนแปลงตัวอักษร  

กรณีศึกษา : การโหลดข่าวสารประชาสัมพันธ์ด้วย PHP

       เพื่อให้ได้ข่าวประชาสัมพันธ์ที่ใหม่ และเป็นปัจจุบัน จึงมีการใช้ Ajax ดึงข้อมูลมาแสดงเสมอๆ         แต่การดึงข้อมูลการแสดงนั้น เกิดขึ้นตลอดเวลา ทั้งที่การอัพเดตข่าวสาร อาจจะมีการเปลี่ยนแปลงเพียงสัปดาห์ละครั้ง เดือนละครั้ง         ซึ่งไม่ได้เกิดขึ้นตลอดเวลาเหมือน Facebook ดังนั้น จึงไม่มีความจำเป็นที่จะต้องส่ง Ajax ไปยังไฟล์ PHP เพื่อคิวรี่จากฐานข้อมูล MySQL ในทุกๆครั้งที่ครบรอบ        ดังนั้น การคิวรี่ทุกครั้งที่ครบกำหนดเวลา จะเป็นการดึงข้อมูลเดิมมาแสดงเท่านั้น        เพื่อลดภาระการดึงข้อมูลมาแสดงที่เกินความจำเป็น จะใช้วิธีการเพิ่มไฟล์สำหรับเช็กสถานะการอัพเดตข่าว โดยที่กำหนดเงื่อนไขสถานะไว้ในคอนฟิกไฟล์ แล้วก็ตรวจสอบโดยการอ่านไฟล์นั้นขึ้นมา หากพบว่ามีการอัพเดตใหม่ ถึงจะไปคิวรี่ข้อมูลมาแสดง แต่ถ้าไม่มีการอัพเดต ก็ใช้ ข้อมูลเดิมแสดงไปเรื่อยๆ โดยไม่ต้องไปเรียกมาจากฐานข้อมูล MySQL อีก

ส่วนแสดงผล แบบระบายสีตามช่วงเวลา ระบบจองห้องประชุม

สร้างตารางเรียน ตารางสอนด้วย PHP SQL สำหรับตรวจสอบช่วงเวลาที่ว่าง สำหรับระบบจองห้องประชุม ต่างๆ จากบทความที่ผ่านมา ได้เขียนไว้แบบไม่ได้ผูกเนื้อหาไว้ก่อนหน้า จึงทำให้การทำงานอาจจะข้ามไปมา คงจะเป็นภาระให้ท่านต้องทำการค้นหา และนำมาปรับใช้กันเอง  วันนี้จึงมีบทความใหม่จะมานำเสนอ โดยที่ใช้บทความเดิมมาปรับแต่งให้เข้ากับระบบการจองห้องประชุม โดยระบบนี้จะใช้ตารางเพียง 2 ตารางในการเก็บข้อมูลเท่านั้น และฐานข้อมูลที่เราจะใช้ในการเขียนโปรแกรมร่วมกับ PHP นั้นก็คือ MySQL เหมือนเช่นเคย