รู้จักกับ 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://blog.laravel.com/octane-frankenphp
- https://laravel.com/docs/10.x/octane