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

เขียน PHP + Ajax ให้ประหยัดแบนด์วิธด้วยการแยก ข้อมูลดิบ ออกจาก HTML


"การเขียนโปรแกรมไม่ใช่เรื่องยาก" 

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

บทความไหนที่ผมบอกว่าน่าใช้ก็คือ "มันแค่น่าใช้งานนะ >_< "  ให้ลองเอาไปปรับใช้ดู อาจใช้ได้บ้างไม่ได้บ้างเพราะมีปัจจัยหลายอย่างที่เป็นตัวแปรให้ผลลัพธ์ที่ได้ต่างกันไป


ออกแบบ Code เพื่อลดภาระของเซิร์ฟเวอร์ 
รูปที่ 1 แผนผังการทำงาน

มาบทความนี้เราจะมาลองเขียนโปรแกรมโดยใช้เทคนิคที่ว่าจะช่วยลดการทำงานของเซิร์ฟเวอร์ที่เคยนำเสนอในบทความก่อนว่าจะทำได้จริงหรือไม่ และทำได้มากน้อยขนาดไหน หรือบางทีผลลัพธ์จากการเขียนโปรแกรมด้วยหลักการนี้อาจจะย่ำแย่กว่าที่คิดก็เป็นได้ >__<


จากบทความ PHP Calendar : ฝีกสร้างปฏิทินไว้ใช้ในงานต่างๆ เราจะลองนำมาเขียนโปรแกรมสร้างเป็นปฏิทิน PHP ฉบับสมบูรณ์โดยเพิ่มความสามารถพิเศษคือ สามารถเปลี่ยนมุมมองของปฏิทินให้มีหลายๆมุมมองโดยถ้าใครเคยใช้ Google Calendar จะเห็นว่ามีให้เลือกอยู่ 4-5 แบบด้วยกัน คือ มุมมองแบบวัน มุมมองแบบสัปดาห์ มุมมองแบบเดือน และสุดท้ายแบบแผนงาน



โดยเริ่มแรกเราจะให้มุมมองแรกที่แสดงเป็นแบบเดือน และเมื่อคลิกที่ปุ่มแต่ละแบบก็ให้เปลี่ยนมุมมองตามเงื่อนไขวันที่ที่เราได้เลือกไว้ ในการเปลี่ยนมุมมองแต่ละครั้ง จะมีการส่งเงื่อนไขสำหรับใช้เรียกข้อมูลจากฐานข้อมูลมาแสดงในปฏิทินด้วย

 รูปที่ 2 การคืนค่าตารางปฏิทินที่สร้างและจัดรูปแบบด้วย PHP

สิ่งที่แตกต่างจากแบบเดิมคือ เราจะไม่เขียนโปรแกรมสร้างตารางปฏิทินโดยใช้โค๊ด PHP แต่เราจะหันไปใช้ JavaScript เป็นตัวสร้างตารางปฏิทินแทน ในส่วนของโค๊ด PHP นั้นเราจะเขียนโปรแกรมสำหรับดึงข้อมูลและส่งค่ากลับมาเท่านั้น 


ลองเข้าไปทดสอบโค๊ด PHP ปฏิทิน ที่ผมสร้างไว้สำหรับเป็นตัวอย่าง ที่นี่



       การเรียกปฏิทินจากโค๊ดตัวอย่าง จะเป็นการส่งผ่าน Ajax โดยใช้ jQuery เพื่อคืนค่าปฏิทินในช่วงเวลาต่างๆ ที่เราคลิกเลือก และโค๊ด PHP ก็จะทำการสร้างตารางตามเงื่อนไขที่เราเลือกและส่งคืนมาแสดงผลในพื้นที่เรากำหนด


รูปที่ 3 แสดงขนาดของข้อมูลที่คืนค่าแบบเดิม




รูปที่ 4 แสดงขนาดของข้อมูล หลังปรับแต่งการทำงานของโค๊ดแล้ว


จากรูปที่ 3 และรูปที่ 4 จะเห็นได้ว่าข้อมูลที่ส่งกลับมานั้นมีข้อมูลต่างกันประมาณ 1.3KB แต่ยังคงให้ผลลัพธ์ที่เหมือนกันดังรูปที่ 5 ซึ่งถ้าปฏิทินนี้มีคนเรียกแสดงผลวันละหมื่นครั้ง การแสดงผลปฏิทินด้วย PHP ทั้งหมด จะส่งข้อมูล 1.3 x 10,000 = 13MB ต่อวันเลยทีเดียว นี่ขนาดแค่ปฏิทินเล็กๆ ข้อมูลไม่มากมายแต่ยังใช้ขนาดนี้ทีเดียวนะครับ (ข้อมูลที่คำนวณมานี้เป็นเพียง การคิดด้วยหลักพื้นฐานผู้เขียนไม่ได้มีความรู้ทางด้านเทคนิคเชิงลึก ลองหาอ่านรายละเอียดเพิ่มเติมที่ http://www.thaicreate.com/web-host/web-host-disk-transfer-bandwidth.html)



รูปที่ 5 แสดงผลลัพธ์ในรูปแบบปฏิทินมุมมมองแบบเดือน



สรุปกันเลยละกันว่าถ้าต้องการให้ PHP ทำงานน้อยลงและประหยัดทรัพยากรระบบดังตัวอย่างที่นำเสนอมามีส่วนประกอบดังนี้
1. ใช้การโหลดข้อมูลด้วย Ajax จะได้ไม่ต้องโหลดข้อมูลทั้งหน้าเว็บ
2. ลดการเขียน HTML ด้วย PHP คือจะดึงเฉพาะข้อมูลเท่านั้น
3. นำข้อมูลที่ได้ไปจัดรูปแบบด้วย JavaScript


หมายเหตุ
1. การเขียนโปรแกรมด้วยวิธีนี้จะค่อนข้างยุ่งยากไปหน่อย เพราะต้องนำข้อมูลมาจัดรูปแบบทีหลัง
2. ถ้าใครที่เขียนโปรแกรม PHP ด้วย CodeIgninter อาจจะขัดใจหน่อยตรงที่ใช้มันมี
Template Parser Class  ให้ใช้ ถ้าใช้วิธีนี้คงอดใช้ Template ที่สะดวกสะบาย
3. ถ้าจะใช้แนวคิดนี้เขียนโปรแกรมไม่ว่าอย่างไรก็ต้องโหลดหน้าเว็บเต็มๆ ในครั้งแรกอยู่ดี จะใช้เทคนิคนี้ก็ต่อเมื่อมีการรับ-ส่งข้อมูลผ่าน Ajax เท่านั้น (เพราะคงจะวุ่นวายน่าดูถ้าอะไรๆก็ JavaScript)
4. แล้วแต่ความคิดเห็นส่วนตัว ว่าจะเอาไปที่ที่ไหน เมื่อไหร่ อย่างไร


ดาวน์โหลดซอร์สโค๊ดในบทความ



PHP CI MANIA PHP Code Generator 
โปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม

สนใจสั่งซื้อเพียง 4,500 บาท
http://fastcoding.phpcodemania.com/

ความคิดเห็น

โพสต์ยอดนิยมจากบล็อกนี้

แจกฟรี!! ระบบต่างๆที่พัฒนาด้วย PHP สำหรับนำไปใช้ในงานต่างๆ

       สำหรับหลายท่านที่ขอโค้ดเข้ามาทาง Inbox ของเฟซบุ๊กแฟนเพจ หรือถามถึงระบบต่างๆหลังไมค์มานั้น ส่วนใหญ่ก็มีแจกอยู่แล้วในเว็บบอร์ด ThaiCreate.Com นะครับ และด้านล่างนี้ก็เป็นระบบต่างๆที่แจกให้นำไปลองใช้ลองศึกษากันครับ

สร้างแบบฟอร์มล็อกอิน HTML + PHP

       ผมจะสร้างระบบตัวอย่างเพื่อแสดงให้เห็นการทำงานของสคริปต์ PHP ที่ใช้ในการล็อกอินอย่างง่ายๆ นะครับ โดยที่ผมจะสร้างโฟลเดอร์ใหม่ขึ้นในไดร์ฟที่เราได้กำหนดให้เป็น Directory Root สำหรับรันสคริปต์ PHP ซึ่งผมกำหนดเอาไว้ที่ D:\www ดังนั้นผมจะสร้างโฟลเดอร์ teacher_assistant ขึ้นมาใหม่จะได้พาธเป็น D:\www\teacher_assistant สำหรับการเข้าถึง จะใช้ URL ดังนี้ http://localhost/teacher_assistant หลังจากสร้างโฟลเดอร์เสร็จเรียบร้อยก็จะเริ่มกระบวนการเตรียมโครงสร้างโปรเจ็กต์ด้วยเครื่องมือช่วยเขียนโปรแกรมชื่อว่า eclipse ซึ่งดูวิธีการสร้างโปรเจ็กต์ได้จากบทความ เริ่มต้นสร้างโปรเจ็กต์ ด้วยโปรแกรม eclipse เครื่องมือเขียนโปรแกรม php ในบทความเป็นการสร้างโปรเจ็กต์ที่มีพาธเป็นโฟลเดอร์ login แต่ในที่นี้ต้องเป็นพาธให้ตรงกับโฟลเดอร์ใหม่ที่เราได้สร้างขึ้นด้วยนะครับ

PHP กับการคิดส่วนลดเป็นเปอร์เซ็น 5%, 10%, 20% ตามช่วงราคาที่กำหนด

<?php     $total_price = 1000;     $discount = 0;         if($total_price >= 500 && $total_price < 1001){         $discount = 5;     }elseif($total_price >= 1001 && $total_price <= 5000){         $discount = 10;     }elseif($total_price >= 5001){         $discount = 20;     }         $discount_bath = ($total_price*$discount)/100; ?> <pre> ซื้อสินค้าครบ 0 ถึง 499 บาท ไม่ได้ส่วนลด ซื้อสินค้าครบ 500 ถึง 1000 บาท ได้ส่วนลด 5% ซื้อสินค้าครบ 1001 ถึง 5000บาท ได้ส่วนลด 10% ซื้อสินค้าครบ 5001 บาทขึ้นไป ได้ส่วนลด 20% </pre> <h3>รวมราคาสินค้า = <?php echo number_format($total_price,2);?></h3> <h5>ส่วนลด = <?php echo $discount;?>%  (<?php echo $discount_bath;?> บาท)</h5> <h2>ราคาหลังส่วนลด = <?php echo number_format($total_price - $discount_bath,2);?>บาท</h2> "PHP ไม่ได้สร้างสุดยอดโปรแกรม แต่ PHP ช่วยให้งานคุณง่ายขึ้นต