4 คะแนน โดย GN⁺ 2024-05-31 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แนะนำ 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 ความคิดเห็น

 
GN⁺ 2024-05-31
ความคิดเห็นบน 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 ในเวลาเดียวกัน