แนะนำ FrankenPHP แอปเซิร์ฟเวอร์ PHP ยุคใหม่
FrankenPHP คืออะไร?
- FrankenPHP คือแอปเซิร์ฟเวอร์ PHP สมัยใหม่ที่เขียนด้วยภาษา Go
- ฝังตัวรันไทม์ PHP อย่างเป็นทางการไว้ใน Caddy web server และรองรับ HTTP/1.1, HTTP/2, HTTP/3
- มีความสามารถในการสร้างและต่ออายุ ใบรับรอง HTTPS อัตโนมัติ (ใช้ Let’s Encrypt หรือ ZeroSSL)
ฟีเจอร์หลัก
- สามารถรันเซิร์ฟเวอร์ PHP ระดับโปรดักชันได้ด้วย คำสั่งเดียว
- สามารถสร้าง ไบนารีแบบสแตนด์อโลน เพื่อรันทั้งเว็บแอปพลิเคชัน PHP และเครื่องมือบรรทัดคำสั่งได้โดยไม่ต้องพึ่งพา dependency
- รองรับ PHP extension ยอดนิยม (เช่น OPcache, XDebug) มาให้โดยค่าเริ่มต้น
การเพิ่มประสิทธิภาพ
- โหมด Worker: บูตแอปพลิเคชันเพียงครั้งเดียวแล้วคงไว้ในหน่วยความจำ
- ใช้งานง่าย: รองรับโดยค่าเริ่มต้นใน Symfony, API Platform, Laravel เป็นต้น
- ความเร็วสูง: เร็วกว่า FPM 3.5 เท่าในแอป API Platform
- ประสิทธิภาพที่คุ้มค่า: ใช้ความสามารถ goroutine ของ Go เพื่อให้ประสิทธิภาพอย่างมีประสิทธิผล
- ดีพลอยง่าย: รันด้วยไบนารีเดียวและไม่ต้องใช้บริการภายนอก
ข้อดีของ FrankenPHP
- ตั้งค่าง่ายและรวดเร็ว: เพียงคัดลอกไฟล์ PHP ไปไว้ที่ document root
- ประสิทธิภาพสูง: ให้ประสิทธิภาพสูงด้วยการผสานเทคโนโลยีเว็บเซิร์ฟเวอร์สมัยใหม่เข้ากับตัวรัน PHP
- ยืดหยุ่น: แม้แต่แอปที่ไม่เข้ากันกับโหมด Worker ก็ยังให้บริการได้ตามปกติ
ความเห็นของ GN⁺
- ประเด็นที่น่าสนใจ: FrankenPHP สามารถใช้เทคโนโลยีเว็บเซิร์ฟเวอร์สมัยใหม่เพื่อยกระดับประสิทธิภาพของแอปพลิเคชัน PHP ได้อย่างมาก
- สิ่งที่ควรพิจารณาเมื่อนำไปใช้: ควรตรวจสอบประเด็นความเข้ากันได้กับสภาพแวดล้อมเซิร์ฟเวอร์ PHP เดิมล่วงหน้า
- มุมมองเชิงวิพากษ์: การนำเทคโนโลยีใหม่มาใช้อาจมาพร้อมเส้นโค้งการเรียนรู้และต้นทุนการตั้งค่าเริ่มต้น
- ทางเลือกที่แนะนำ: อาจพิจารณา PHP server อย่าง RoadRunner หรือ Swoole ที่มีฟีเจอร์คล้ายกันด้วย
- ข้อได้เปรียบและข้อเสียของการเลือกเทคโนโลยี: แม้การเพิ่มประสิทธิภาพและการดีพลอยที่ง่ายจะเป็นข้อดี แต่ก็ควรพิจารณาความเสี่ยงจากการนำเทคโนโลยีใหม่มาใช้และปัญหาการผสานเข้ากับระบบเดิมอย่างรอบคอบ
1 ความคิดเห็น
ความคิดเห็นบน Hacker News
ไม่ได้พัฒนา PHP มา 10 ปีแล้ว แต่หน้าแลนดิ้งเพจนี้เกือบทำให้กลับไปใช้ PHP อีกครั้ง: ดีไซน์ สีสัน และแอนิเมชันดูสะอาดตา และสื่อสารคุณค่าได้ชัดเจน ดูเป็นวิธีที่ดีในการเริ่มโปรเจ็กต์เล็ก ๆ
เป็นนักพัฒนา C# มานาน ตอนนี้ใช้ PHP8 เป็นหลัก: PHP8 เป็นภาษาที่ยอดเยี่ยมสำหรับการทำงานให้เสร็จได้อย่างรวดเร็ว ทิศทางนี้ดูดีกว่า LAMP
สงสัยว่าผลงานบน Tech Empower benchmark เป็นอย่างไร: ตอนนี้ยังอยู่ในสถานะ "ยังไม่เสร็จ" และรั้งท้ายสุด
ใช้เว็บเซิร์ฟเวอร์แบบรวมของ PHP บ่อยระหว่างพัฒนา: มันช้าเพราะเป็น single-thread และไม่เหมาะกับสภาพแวดล้อม production ส่วน FrankenPHP ดูมีอนาคต แต่ปัญหาเรื่องจำนวนคอร์/เธรดที่จำกัดก็ยังคงอยู่ Docker image ดูมีแนวโน้มที่ดี
ลองใช้ FrankenPHP แล้ว แต่ช้ามาก: เอกสารยังไม่เพียงพอ และประสิทธิภาพต่ำกว่าที่คาดไว้ แม้อ้างว่าแรงกว่า FPM 3.5 เท่า แต่ในการใช้งานจริงได้ประสิทธิภาพไม่ถึง 1% ของที่คาด
FrankenPHP มีปัญหาด้านประสิทธิภาพ: ถึงอย่างนั้นก็ยังเป็นโปรเจ็กต์ที่มีอนาคตมาก
ลิงก์ที่เกี่ยวข้อง: FrankenPHP, บทแนะนำเซิร์ฟเวอร์แอป PHP ที่เขียนด้วย Go
วิธี build Docker container: อธิบายวิธีแปลง Debian ใหม่ให้เป็นคอนเทนเนอร์ที่ต้องการผ่านคำสั่ง Docker
ลอง benchmark Wordpress บน FrankenPHP เทียบกับ Apache Mod-PHP: ยังไม่เห็นข้อได้เปรียบของ FrankenPHP ทดสอบบน Docker และน่าจะต้องขุดลึกกว่านี้
ชอบที่โปรเจ็กต์นี้ขึ้นหน้าแรกของ HN: ให้ความรู้สึกว่าสถาปัตยกรรมที่ไม่ใช้ร่วมกับ FPM นั้นเป็นทั้งเหตุผลของความสำเร็จและข้อจำกัดของ PHP ในเวลาเดียวกัน