การเปิดใช้งานโมดูลเฟรมเวิร์ก Phalcon PHP ประสิทธิภาพสูงใน ServBay
ServBay คือสภาพแวดล้อมพัฒนาเว็บบนเครื่องที่ออกแบบมาสำหรับนักพัฒนาอย่างแท้จริง ด้วยการรวมเทคโนโลยีหลักยอดนิยมมากมาย สำหรับนักพัฒนา PHP แล้ว ServBay ได้เตรียมโมดูลเฟรมเวิร์ก Phalcon ที่ประสิทธิภาพสูงมาให้พร้อมใช้งานทันที โดยมีวิธีการเปิดใช้งานที่สะดวกยิ่งกว่าที่เคย Phalcon มีชื่อเสียงด้านความเร็วและประสิทธิภาพ การออกแบบแบบโมดูลาร์ช่วยให้คุณสร้างเว็บแอปที่มีประสิทธิภาพสูงได้อย่างง่ายดาย
รู้จักเฟรมเวิร์ก Phalcon
Phalcon คือเฟรมเวิร์ก PHP แบบโอเพ่นซอร์สที่ครบวงจร มีชื่อเสียงด้านความเร็วเป็นพิเศษและกินทรัพยากรต่ำ ต่างจากเฟรมเวิร์ก PHP ส่วนใหญ่ที่เขียนด้วย PHP ล้วน Phalcon ถูกพัฒนาด้วยภาษา C และโหลดเป็นส่วนขยายของ PHP ทำให้มีข้อได้เปรียบด้านประสิทธิภาพอย่างชัดเจน โดยยังคงมีชุดฟีเจอร์ทรงพลังและสมบูรณ์
คุณสมบัติเด่น
- ประสิทธิภาพสูง: ด้วยการทำงานเป็น C extension โดยตรงในระดับล่าง Phalcon จึงเร็วกว่าเฟรมเวิร์กที่สร้างด้วย PHP แบบล้วน ๆ และใช้หน่วยความจำและ CPU น้อยกว่าขณะประมวลผลคำร้องขอ
- โอเวอร์เฮดต่ำ: การออกแบบของ Phalcon ช่วยเพิ่มประสิทธิภาพการใช้ทรัพยากร ทำให้รองรับโหลดพร้อมกันจำนวนมากได้อย่างมีประสิทธิภาพ
- ฟีเจอร์ครบครัน: มีสถาปัตยกรรม MVC (Model-View-Controller) เต็มรูปแบบ พร้อม ORM (Object Relational Mapping), เครื่องมือเทมเพลต, ระบบกำหนดเส้นทางยืดหยุ่น, แคช, บริการคิว และอื่น ๆ ตอบโจทย์ความต้องการของเว็บแอปพลิเคชันที่ซับซ้อน
- ใช้งานง่าย: แม้ว่าจะใช้ภาษา C เป็นแกนหลัก นักพัฒนายังคงเขียนโค้ดด้วยไวยากรณ์ PHP ที่คุ้นเคยได้ เฟรมเวิร์กให้ API ที่ชัดเจนและเอกสารประกอบมากมาย ลดข้อจำกัดด้านการเรียนรู้
- การออกแบบแบบโมดูลาร์: แต่ละคอมโพเนนต์ของ Phalcon ถูกออกแบบให้ยืดหยุ่น แยกส่วนได้ดี นักพัฒนาสามารถเลือกใช้เปลี่ยนไปใช้คอมโพเนนท์ต่าง ๆ ตามความต้องการของโปรเจกต์
เวอร์ชันของโมดูล Phalcon ที่ติดตั้งใน ServBay
ServBay รองรับ PHP หลายเวอร์ชันยอดนิยม และผนวกโมดูล Phalcon เวอร์ชันที่เหมาะสมไว้ล่วงหน้า โดยจะมีการอัปเดต PHP และซอฟต์แวร์อื่น ๆ อยู่เสมอเพื่อให้รองรับเทคโนโลยีใหม่ล่าสุด รายละเอียดเวอร์ชัน Phalcon ที่จับคู่กับ PHP ในแต่ละเวอร์ชันสามารถตรวจสอบได้จากหน้าจัดการแพ็คเกจของ ServBay ตัวอย่างบางเวอร์ชันที่ใช้งานอยู่ (ServBay อาจรองรับเวอร์ชันมากกว่านี้หรือมีการอัปเดตใหม่):
- PHP 5.6, 7.0, 7.1: Phalcon 3.4.5
- PHP 7.2, 7.3, 7.4: Phalcon 4.1.2
- PHP 8.0, 8.1, 8.2, 8.3: Phalcon 5.7.0
- PHP 8.4, 8.5-dev: Phalcon 5.8.0
วิธีเปิดใช้งานโมดูล Phalcon
การเปิดใช้งานโมดูล Phalcon ใน ServBay นั้นง่ายและตรงไปตรงมามาก โดยปกติแล้วเพื่อให้สภาพแวดล้อมเบา โมดูลนี้จะถูกปิดใช้งานไว้ คุณสามารถเปิดใช้งานได้อย่างสะดวกผ่านหน้ากราฟิกของ ServBay
วิธีแนะนำ: เปิดใช้งานผ่านส่วนติดต่อผู้ใช้กราฟิกของ ServBay
นี่เป็นวิธีที่สะดวกและแนะนำมากที่สุด:
- เปิดโปรแกรม ServBay
- ไปที่ Languages (ภาษา) ตรงแถบเมนูด้านซ้าย
- หารายการ PHP และเลือกเวอร์ชันที่คุณต้องการเปิดใช้ Phalcon เช่น
PHP 8.3
หรือPHP 8.4
- คลิกปุ่ม Extensions (ส่วนขยาย) ทางขวาของเวอร์ชัน PHP
- ในรายการส่วนขยายที่ปรากฏ ให้หา Phalcon
- กดปุ่มสวิตช์ทางซ้ายมือของ Phalcon เพื่อเปิดใช้งาน
- คลิกปุ่ม Save (บันทึก) ที่ด้านล่างหน้าต่าง
- ServBay จะแจ้งเตือนให้คุณรีสตาร์ท PHP ที่เกี่ยวข้องเพื่อให้การเปลี่ยนแปลงมีผล กดยืนยันเพื่อเริ่มต้นใหม่
เมื่อรีสตาร์ทเสร็จแล้ว Phalcon จะถูกโหลดเข้าไปในเวอร์ชัน PHP ที่เลือกไว้เรียบร้อย
วิธีแก้ไขไฟล์กำหนดค่าด้วยตนเอง (สำหรับผู้ใช้ขั้นสูง)
หากคุณต้องการตั้งค่าอัตโนมัติหรือดีบักขั้นสูง สามารถเพิ่ม Phalcon ผ่านการแก้ไขไฟล์ config PHP ด้วยตนเอง
ขั้นตอนที่ 1: ระบุตำแหน่งไฟล์ config
หาไดเรกทอรี conf.d
สำหรับ PHP เวอร์ชันที่ต้องการ ซึ่งเป็นตำแหน่งมาตรฐานของไฟล์กำหนดค่าส่วนขยาย เช่น หากต้องการเปิดใช้ Phalcon กับ PHP 8.3 ไฟล์ config ปกติจะอยู่ที่:
bash
/Applications/ServBay/etc/php/8.3/conf.d/phalcon.ini
1
เปิดไฟล์นี้ด้วยโปรแกรมแก้ไขข้อความ
ขั้นตอนที่ 2: แก้ไขไฟล์ config ของ Phalcon
ค้นหาบรรทัดด้านล่างและลบเครื่องหมาย ;
หน้าบรรทัด extension = phalcon.so
เพื่อยกเลิกการคอมเมนต์ และเปิดใช้ส่วนขยายนี้:
ini
[Phalcon]
; Uncomment the following line to enable Phalcon
extension = phalcon.so
1
2
3
2
3
หลังแก้ไขควรเป็นดังนี้:
ini
[Phalcon]
extension = phalcon.so
1
2
2
ขั้นตอนที่ 3: เปิดใช้โมดูล PSR (เฉพาะ PHP 7.2 - PHP 7.4)
หมายเหตุ: หากคุณเปิดใช้ผ่านหน้ากราฟิก ServBay ให้ข้ามขั้นตอนนี้
สำหรับ PHP 7.2 ถึง 7.4 เฟรมเวิร์ก Phalcon ต้องการ PSR (PHP Standards Recommendations) extension ด้วย ServBay เตรียมมาให้แล้ว คุณต้องแน่ใจว่าได้เปิดใช้งานไว้ที่ไฟล์ phalcon.ini
หรือไฟล์ PSR ที่เกี่ยวข้อง (ปกติคือ psr.ini
) โดยต้องยกเลิกการคอมเมนต์ดังนี้:
ini
; Uncomment both Psr & Phalcon to enable Phalcon
[Psr]
extension = psr.so
[Phalcon]
extension = phalcon.so
1
2
3
4
5
6
2
3
4
5
6
ขั้นตอนที่ 4: รีสตาร์ทบริการ PHP
ไม่ว่าคุณจะใช้วิธีไหน เมื่อเปลี่ยนค่า config PHP extension จะต้องรีสตาร์ท PHP ที่เกี่ยวข้องทุกครั้ง
ใน ServBay ใช้หน้าต่างหลักหรือหน้า Packages (แพ็คเกจ) เลือก PHP เวอร์ชันที่แก้ไขไว้ แล้วกดปุ่มรีสตาร์ทข้าง ๆ (ไอคอนลูกศรวน)
ตรวจสอบว่าโมดูล Phalcon ถูกโหลดสำเร็จหรือไม่
การตรวจสอบว่ามีการโหลด Phalcon หรือไม่ ให้ดู info ของ PHP (phpinfo()
)
- สร้างไฟล์
phpinfo.php
ในโฟลเดอร์ root ของเว็บไซต์ที่ตั้งไว้ใน ServBay เช่น หาก root ของservbay.demo
คือ/Applications/ServBay/www/servbay.demo
ก็สร้างไฟล์ใหม่ชื่อ phpinfo.php ที่นั่น - ใส่โค้ดต่อไปนี้ในไฟล์
phpinfo.php
:php<?php phpinfo(); ?>
1
2
3 - เปิด browser เพื่อเข้าชม URL ของไฟล์เช่น
https://servbay.demo/phpinfo.php
- มองหา section ที่ชื่อ "Phalcon" ในหน้าแสดงผล หากเห็นข้อมูล Phalcon และเวอร์ชัน แปลว่าโมดูลถูกโหลดสำเร็จ
ภาพ: การค้นหาข้อมูล Phalcon ในผลลัพธ์ phpinfo
ตัวอย่างการใช้งาน
เมื่อเปิดใช้ Phalcon แล้ว คุณก็เริ่มพัฒนาเว็บแอปด้วยเฟรมเวิร์กนี้ได้ทันที ตัวอย่างด้านล่างนี้จะแนะนำวิธีสร้างแอปพื้นฐานของ Phalcon และรันบน ServBay
สมมติว่าคุณต้องการเก็บไฟล์โครงการที่ /Applications/ServBay/www/phalcon-demo
ขั้นตอนที่ 1: สร้างโครงสร้างโฟลเดอร์ของโปรเจกต์
สร้างไฟล์และโฟลเดอร์ตามที่ Phalcon แนะนำ
/Applications/ServBay/www/phalcon-demo/
├── app/
│ ├── controllers/
│ │ └── IndexController.php
│ └── views/
│ └── index/
│ └── index.phtml
└── public/
└── index.php
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
ขั้นตอนที่ 2: สร้าง config เว็บไซต์ ServBay
สร้าง Website (เว็บไซต์) ใหม่ใน ServBay ตั้งโดเมนเป็น phalcon-demo.servbay.demo
กำหนด root เป็นโฟลเดอร์ public
ของโปรเจกต์ (/Applications/ServBay/www/phalcon-demo/public
) พร้อมตรวจสอบให้แน่ใจว่าใช้ PHP เวอร์ชันที่เปิดใช้ Phalcon ไว้แล้ว
ขั้นตอนที่ 3: เขียนโค้ดตัวอย่าง
Front Controller:
public/index.php
ไฟล์ entry point ของแอปphp<?php use Phalcon\Autoload\Loader; use Phalcon\Di\FactoryDefault; use Phalcon\Mvc\View; use Phalcon\Mvc\Url; use Phalcon\Mvc\Application; // กำหนดค่าสำหรับไดเร็คทอรีหลักและไดเร็คทอรีแอป define('BASE_PATH', dirname(__DIR__)); // ชี้ไปที่ /Applications/ServBay/www/phalcon-demo define('APP_PATH', BASE_PATH . '/app'); // ชี้ไปที่ /Applications/ServBay/www/phalcon-demo/app // ลงทะเบียน auto loader สำหรับ controllers และ models $loader = new Loader(); $loader->setDirectories( [ APP_PATH . '/controllers/', APP_PATH . '/models/', // ถ้ามีโมเดล ให้เพิ่มไดเรกทอรีโมเดลด้วย ] ); $loader->register(); // สร้าง DI (Dependency Injection) container $container = new FactoryDefault(); // ลงทะเบียนบริการ View ใน DI $container->set( 'view', function () { $view = new View(); $view->setViewsDir(APP_PATH . '/views/'); // ตั้งโฟลเดอร์สำหรับไฟล์ view return $view; } ); // ลงทะเบียนบริการ URL ใน DI $container->set( 'url', function () { $url = new Url(); $url->setBaseUri('/'); // ตั้งค่า base URL return $url; } ); // สร้างอินสแตนซ์ Phalcon Application $application = new Application($container); try { // ประมวลผลคำขอแล้วส่ง response $response = $application->handle( $_SERVER["REQUEST_URI"] ); $response->send(); } catch (\Exception $e) { // จับข้อผิดพลาดและแสดงข้อความ echo 'Exception: ', $e->getMessage(); } ?>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62Controller:
app/controllers/IndexController.php
คอนโทรลเลอร์ที่ประมวลผลหน้าแรกphp<?php use Phalcon\Mvc\Controller; use Phalcon\Support\Version; // นำเข้าคลาส Version เพื่ออ่านเวอร์ชัน Phalcon class IndexController extends Controller { // action เริ่มต้นเมื่อเข้า index public function indexAction() { // อ่านเวอร์ชันปัจจุบันของ Phalcon $phalconVersion = new Version(); $versionString = $phalconVersion->get(); // ส่งเวอร์ชันไปให้ view $this->view->phalconVersion = $versionString; // แสดงผล view ที่ไฟล์ app/views/index/index.phtml } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20View:
app/views/index/index.phtml
ไฟล์แสดงข้อความต้อนรับและโชว์เวอร์ชัน Phalconhtml<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Hello ServBay with Phalcon</title> <style> body { font-family: sans-serif; margin: 40px; text-align: center; } h1 { color: #333; } p { color: #666; } </style> </head> <body> <h1>Hello ServBay!</h1> <p>คุณได้รันแอป Phalcon บน ServBay สำเร็จแล้ว</p> <p>เวอร์ชัน Phalcon ปัจจุบัน: **<?= $phalconVersion ?>**</p> </body> </html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
ขั้นตอนที่ 4: เข้าชมแอป
ตรวจสอบให้แน่ใจว่า Nginx/Caddy และ PHP ที่เลือกเปิดทำงานอยู่ แล้วเข้าชมโดเมนที่ตั้งไว้ เช่น https://phalcon-demo.servbay.demo
ในเบราว์เซอร์ คุณจะเห็นหน้าที่แสดงข้อความ "Hello ServBay!" และเวอร์ชัน Phalcon บนหน้าจอ
ภาพ: ตัวอย่างแอป Phalcon ที่แสดงผลสำเร็จ
ข้อควรระวัง
- ให้เลือก PHP เวอร์ชันที่เหมาะสมและรองรับกับโปรเจกต์ Phalcon ของคุณ
- หลังแก้ไขไฟล์ config ต้องรีสตาร์ท PHP เสมอ
- หากพบปัญหาให้ตรวจสอบ log ข้อผิดพลาดของ PHP และเว็บเซิร์ฟเวอร์ (Nginx/Caddy) ซึ่งมักเก็บไว้ที่
/Applications/ServBay/var/log/
คำถามที่พบบ่อย (FAQ)
Q1: เปิดใช้งาน Phalcon แล้ว แต่ไม่พบใน phpinfo()
ต้องทำอย่างไร
A1: ตรวจสอบดังนี้
- ตรวจให้แน่ใจว่าแก้ไขไฟล์ config ของ PHP เวอร์ชันที่ถูกต้อง (สำหรับกรณีแก้ด้วยมือ)
- ยืนยันว่าคอมเมนต์หน้าบรรทัด
extension = phalcon.so
ถูกลบแล้ว - รีสตาร์ท PHP ที่ถูกต้องสำหรับเวอร์ชันที่แก้ไข
- การตั้งค่าของเว็บไซต์ใช้ PHP เวอร์ชันที่เปิดใช้ Phalcon
- ตรวจสอบ log ข้อผิดพลาดของ PHP ใน ServBay ว่ามีข้อความล้มเหลวตอนโหลด extension หรือไม่
Q2: ใช้งาน Phalcon แล้วขึ้น error Class 'Phalcon\...' not found
สาเหตุคืออะไร
A2: ปกติแล้วหมายความว่า Phalcon ไม่ถูกโหลดใน PHP ที่รันอยู่ ให้ทำตามขั้นตอนในเอกสารนี้เพื่อเปิดและตรวจสอบว่า Phalcon ถูกแอคทีฟใน PHP ที่เว็บไซต์ใช้งาน รวมถึงตรวจสอบบน phpinfo()
ด้วย ถ้า extension โหลดแล้ว ยัง error อีก ให้ตรวจสอบ namespace ในซอร์สโค้ดและการตั้งค่า autoload ของโปรเจกต์
Q3: Phalcon ต้องการ dependency อะไรเพิ่มเติมหรือไม่
A3: PHP 7.2 - 7.4 จำเป็นต้องใช้ PSR extension ด้วย ซึ่ง ServBay ติดตั้งมาให้แล้ว แค่แน่ใจว่ามีการเปิด extension = psr.so
และ extension = phalcon.so
ใน phalcon.ini
สำหรับ PHP 8.0 ขึ้นไป (Phalcon 5.x) โดยมากไม่จำเป็นต้องเปิด PSR เพิ่มเติม เพราะรองรับในตัว
สรุป
ServBay ช่วยให้การติดตั้งและใช้งานเฟรมเวิร์ก Phalcon บนเครื่องสำหรับนักพัฒนาง่ายขึ้นอย่างมาก ไม่ว่าจะเป็นการเปิดใช้งานผ่านส่วนติดต่อผู้ใช้กราฟิกหรือแก้ไข config ด้วยตนเอง ทุกอย่างใช้เวลาไม่กี่นาที อีกทั้ง ServBay ยังเข้ากันได้กับเทคโนโลยีเว็บอื่น ๆ ครบถ้วน ทำให้คุณสร้างสภาพแวดล้อมพัฒนาแอปบนเว็บด้วย Phalcon ที่ทรงประสิทธิภาพและใช้งานได้จริงบน macOS ได้อย่างรวดเร็ว ใช้จุดเด่นด้าน performance ของ Phalcon เพื่อสร้างเว็บแอปที่โหลดเร็วและกินทรัพยากรต่ำ พร้อมสำหรับโลกยุคใหม่