รู้จักกับ FrankenPHP

20 ธันวาคม 2566 เวลาอ่าน 2 นาที
รู้จักกับ FrankenPHP

FrankenPHP เป็น PHP Application Server ใหม่ที่ถูกเขียนขึ้นมาบนภาษา Go ถูกพัฒนาโดยนาย Kévin Dunglas, สมาชิกหลักของทีม Symfony นะครับ โดยความสามารถที่น่าสนใจของ FrankenPHP นี้ก็พาเอาฟีเจอร์ที่เป็น modern ของ Web Application Server สมัยนี้เข้ามาให้ใช้งานได้ใน PHP นะครับ ส่วนหนึ่งของ Feature ที่น่าสนใจมีตามนี้ครับ

Extensible

- ใช้งานได้กับ PHP v 8.2+ ขึ้นไป extensions PHP ส่วนใหญ่และ Caddy modules (Go module ที่ใช้ run web server)

มีเพียง Service เดียว

ถูกออกแบบมาด้วยความเรียบง่ายเป็นหลักนะครับ โดยมีเพียง service เดียว Binary เดียว ถ้าใช้ FrankenPHP แล้วไม่จำเป็นต้องมี PHP-FPM อีกต่อไป ตัวเวปเซิฟเวอร์ run ผ่าน SAPI (Server Application Programming Interface) ที่ถูกออกแบบมาใช้สำหรับ Go Web Server โดยเฉพาะ

Deploy ง่ายมาก

ตัว FrankenPHP สามารถ Deploy ผ่าน Docker Image ได้ แบบ Cloud Native App ทั่วไปเลยทีเดียว ใช้งานได้กับ Kubernetes และ Cloud Platform อื่น ๆ นอกจากนี้ ยังสามารถที่จะรวม Package PHP เป็น Standalone Executable Static Binary โดยไม่ต้องติดตั้งโปรแกรมอื่นเพิ่มเติมได้อีกเลย

Worker mode

คือทำการ Boot Web Application ของเราเพียงครั้งแรกครั้งเดียว แล้วเก็บไว้ run ต่อไปผ่าน memory ไม่ได้มีการอ่าน code ผ่าน PHP ไฟล์ เหมือน PHP-FPM แบบเดิมอีกต่อไปแล้ว (ความสามารถเดียวกับ Swoole, Road Runner)

103 Early Hints

Early Hints เป็นฟีเจอร์ใหม่บน Web Platform ที่ช่วยให้เวปโหลดเร็วขึ้น ถึง 30% FrankenPHP เป็น เพียง PHP SAPI ตอนนี้ที่ support Early Hints

การทำงานแบบ Real-time

ด้วย Mercure hub ที่ถูกสร้างมาแบบ Built-in PHP Apps ของเราสามารถส่ง Event ไปยัง browser ที่ทำการเชื่อมต่ออยู่ได้ โดย browser จะได้รับข้อมูล payload มาในแบบ JavaScript event เลยทีเดียว (ใช้แทน Web Socket)

Zstandard และ Gzip compression

สนับสนุนการ บีบอัดข้อมูลแบบสมัยใหม่ภายในตัว

Structure logging

สนับสนุนการ logging ที่มีรูปแบบทันสมัยมากขึ้น

Prometheus metrics และ Tracing

สนับสนุน Prometheus แบบ Built-in

HTTP/2 & HTTP/3

สนับสนุน HTTPS, HTTP/2 และ HTTP/3 แบบ native

HTTPS Automation

สนับสนุนการการสร้าง HTTPS Certificate, renew และ revoke แบบอัตโนมัติ 

Graceful Reload

Deploy App ได้แบบ zero-downtime 


Laravel Octane + FrankenPHP

นอกจากนี้แล้ว Laravel Octace ยัง support การใช้งาน FrankentPHP อีกด้วย แม้ตอนนี้อาจจะยังเป็น Beta อยู่นะครับ โดยมีการ Benchmark ที่น่าสนใจว่าได้ Performance ที่เร็วกว่าการ run Laravel App ผ่าน Swoole หรือ RoadRunner อีกด้วย

ถ้าอยากรู้ว่าจะติดตั้ง Laravel Octane กับ FrankenPHP อย่างไร ไปดูตาม Documentation เพิ่มเติมได้เลยครับ

 

แหล่งอ้างอิง

หากสนใจจะลองใช้งาน FrankenPHP ไปดูต่อได้ตาม link นี้เลยครับ

- https://frankenphp.dev/

- https://blog.laravel.com/octane-frankenphp 

- https://laravel.com/docs/10.x/octane 

 

Phattarachai Chaimongkol

เกี่ยวกับ phattarachai.dev

ผมอ๊อฟนะครับ เป็นผู้ประกอบการอิสระ ที่ปรึกษาทางด้าน Web Application Development ให้แก่องค์กร ธุรกิจ SME และหน่วยงานราชการ
Web Developer ผู้มีใจรักใน Laravel เป็นพาร์ทเนอร์บริษัท Digital Agency ชั้นนำทางด้าน UX/UI เพื่อพัฒนาโปรเจคให้แก่ลูกค้า ผมช่วยสร้างเครื่องมือทางด้าน Web ที่มีคุณภาพให้ผู้ประกอบการดำเนินธุรกิจได้ง่ายขึ้นใช้งานได้จริง เน้นประสบการณ์ ความชำนาญ ผลงานคุ้มค่าเทียบเท่าจ้างงานกับบริษัทใหญ่ ๆ

ยามว่าง ๆ ชอบเล่นเกมส์บน Steam ครับ

เรื่องที่เกี่ยวข้อง

PHP function แสดงขนาดไฟล์แบบคนอ่านรู้เรื่อง เป็น KB, MB, GB
20 ธันวาคม 2566
PHP function แสดงขนาดไฟล์แบบคนอ่านรู้เรื่อง เป็น KB, MB, GB
คำสั่ง Postgresql ที่เอาไว้ใช้จัดการเกี่ยวกับ Replication
20 ธันวาคม 2566
คำสั่ง Postgresql ที่เอาไว้ใช้จัดการเกี่ยวกับ Replication
สรุป Taylor Otwell Keynote ใน Laracon US 2024 - Inertia 2.0, VS Code Extension และ Laravel Cloud
20 ธันวาคม 2566
สรุป Taylor Otwell Keynote ใน Laracon US 2024 - Inertia 2.0, VS Code Extension และ Laravel Cloud