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

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

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



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

ถ้าสามารถใช้ RAM ได้เหลือเฟือก็คงใช้ Array เก็บข้อมูลมากๆ ได้สบายๆ หรือถ้าไม่จำกัด CPU ปล่อยใช้เต็มที่แล้วล่ะก็จะเขียนโปรแกรมสั่งให้ MySQL คิวรี่กี่ครั้งก็ได้แล้วแต่คุณเลยละกัน

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



เริ่มจากแนวคิดเรื่อง "แบ่งภาระงานให้กับสคริปต์แต่ละตัวอย่างไรดี"



สคริปต์ที่ผมพูดถึงก็คือภาษาที่ใช้พัฒนาเว็บฯนั่นเอง ที่ใช้เป็นประจำก็คือ HTML, JavaScript, PHP (สำหรับ jQuery นั้นถือว่าเป็น Framework ของ JavaScript อยู่ในส่วนเดียวกัน)

HTML ทำงานบนฝั่งผู้ใช้งานแต่ละคน เป็นสคริปต์ภาษาหลักที่ใช้จัดรูปแบบหน้าเว็บเท่านั้น
JavaScript นั้นทำงานที่ฝั่งของผู้ใช้งานแต่ละคน
PHP จะทำงานอยู่บนเซิร์ฟเวอร์ 



นั่นหมายความว่า...

ถ้าเราใช้คำสั่ง PHP การเรียกใช้ตัวแปร หรือกระบวนการต่างๆ จะใช้ CPU และ RAM ของเครื่อง Server อย่างแน่นอน เช่นใช้ PHP สั่งแสดงข้อมูล HTML ด้วยคำสั่ง 

<?php
echo "<b>Hello World</b>";
?>

การทำงานนี้ก็จะใช้หน่วยความจำ หรือ CPU ของเซิร์ฟเวอร์ใช่หรือไม่??


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

ส่งค่าผ่าน Ajax โดยใช้ jQuery

$.ajax({
url: 'ajax.php',
type: 'get', 
cache: false,
data: 'action=view',
success: displayData
});

คำสั่ง PHP ที่แสดงข้อมูล

<?php
echo "Hello World";
?>

เมื่อส่งค่ากลับมายังจาวาสคริปต์

function displayData(data){
    $('#display").html("<b>" + data + "</b>");
}


นี่เป็นตัวอย่างเล็กๆ ของการใช้จาวาสคริปต์จัดรูปแบบให้ข้อมูลตัวอักษรหนาขึ้น แทนการ echo รูปแบบโดย PHP ซึ่งจะสังเกตได้ว่าการทำงานของ PHP นั้น จะทำหน้าที่ส่งข้อมูลมาแบบเพียวๆ ไม่มีการตกแต่งจัดรูปแบบ HTML แต่อย่างใด


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



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

ปล2. ผมมักจะแสวงหาเว็บโฮสติ้งฟรีเพื่อทดสอบโค๊ด หรือลอง CMS เล่นๆ แล้วก็มักจะลงเอยด้วยการโดยบล็อคไอดี และลบซอร์สโค๊ดของผม เพราะเจ้าของเขาบอกว่าใช้ CPU เกินขีดจำกัด



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 แต่ในที่นี้ต้องเป็นพาธให้ตรงกับโฟลเดอร์ใหม่ที่เราได้สร้างขึ้นด้วยนะครับ

การดึงข้อมูล MySQL มาแสดงในปฏิทิน Fullcalendar ด้วย PHP

หลักการทำงาน เรียกข้อมูลจากตาราง tb_event ด้วยฟังก์ชั่นของ MySQLi ข้อมูลจากฐานข้อมูลจะถูกวนลูปเก็บไว้ใน $data และจะถูกส่งไปที่ Fullcalendar ด้วยการแปลงข้อมูลจาก PHP ให้อยู่ในรูปแบบ JSON อาร์เรย์ด้วยฟังก์ชั่น json_encode() PHP Code <?php //Database $data = array(); $link = mysqli_connect("127.0.0.1", "tobedev", "1234", "tobedev_example"); mysqli_set_charset($link, 'utf8'); if (!$link) {     echo "Error: Unable to connect to MySQL." . PHP_EOL;     echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;     echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;     exit; } $query = "SELECT * FROM tb_event"; if ($result = $link->query($query)) {     /* fetch object array */     while ($obj = $result->fetch_object()) {        $data[] = array(                     'id' => $obj->id,                     'title'=> $obj->titl