Swoole PHP คืออะไร
Swoole เป็นส่วนเสริมของ PHP ตัวหนึ่งที่ช่วยเพิ่มประสิทธืภาพการทำงานของ php ทางด้านเน็ตเวิร์ก รองรับการทำงาน มัลติเธรด และโครูทีน (แชร์ตัวแปล ฟังก์ชั่นกันได้) รวมถึง ถึง ซ็อกเก็ต ด้วย จากเว็บ php.net ให้คำจำกัดความของ Extension Swoole ไว้ว่า
""" Swoole is a high-performance networking framework using an event-driven, asynchronous, non-blocking I/O model. It can be used to develop high-performance, scalable, concurrent TCP, UDP, Unix socket, HTTP, Websocket services """
แปลว่าถ้าจะรีดความสามารถของ PHP ทางด้าน Network ใช้ตัวนี้ เดียวหัวข้อด้านล่างจะพามาดูว่า ทำไมมันถึงถูกเรียกว่าส่วนเสริมที่ทำให้ การทำงานทางด้านเน็ตเวิร์กของ PHP มีประสิทธิภาพ กัน async programming คือคำตอบนั้น
ประวัติความเป็นมา ของ Swoole : Swoole ออกเวอร์ชั่น 1 ประมาณ ปี 2015 เนื่องจาก PHP มีข้อจำกัด เรื่อง มัลติเธรด และ และทำงานแบบ ซิงโครไนซ์ ตลอดจนการแชร์ตัวแปล ฟังก์ชั่น ออฟเจ็ตต่างๆ ทำให้ PHP ยังด้อยกว่า ภาษา C++,Java ทั้งๆ ที่ Core หลักของ PHP ทำงานได้เร็วกว่าสองภาษานั้น โปรแกรมเมอร์ชาวจีนจึงพัฒนา Extension เพื่อปิดข้อจำกัดตรงนั้น และ แชร์ ออกมาให้ทั่วโลกใช้กัน จากเวอร์ชั่น 1 ถึง เวอร์ชั่นปัจจุบัน 4.5.x Swoole ถูกพัฒนาไปมาก และได้นำมาใช้งานจริงในสภาพแววล้อมที่เป็น โปรดักชั่นแล้วทำให้มันใจได้ว่าเราสามารถนำมาใช้งาน และต่อยอดได้อย่างแน่นอน
Swoole ถูกพัฒนาด้วย ภาษา C++ เหมือนกับ Extension ตัวอื่นๆ ของ PHP ปัจจุบัน Swoole เวอร์ชั่น 4.5.5 แล้ว และ รองรับ PHP 8 ที่กำลังจะออกมาด้วย
Swoole ทำงานอย่างไร
จากภาพจะเห็นว่า task งานจะมีการกระจายให้ Worker ต่างๆ ทำงาน เรียกกว่ากระจ่ายกันทำงาน ทำให้รองรับการทำงาน หรือ Request พร้อมๆ กันได้มาก ขึ้นกว่าการเขียน PHP ปกติหลายเท่าขึ้นอยู่กับลักษณะโปรแกรมที่เราเขียน
มี Extension ของ PHP ที่ทำงานใกล้เคียงกับ Swoole อีกไหม ตอบเลยว่ามี มันคือ ReactPHP และ amphp แต่ประสิทธิภาพ ยังด้อยกว่า Swoole อยู่หลายขุม
จะใช้งาน Swoole ใน PHP ต้องมีอะไร บ้าง
- ต้องมี PHP 5.6 ขึ้นไป เวอร์ชั่นที่แนะนำ คือ 7.2,7.3 หรือ 7.4 หรือเวอร์ชั่น 8 ตอนนี้ก็รองรับแล้ว
- ต้องมีสิทธิ์ในการติดตั้งส่วนเสริมใน Web Server ของเรา
- มีความรู้ในการรันคำสังแบบ Command บ้างเล็กน้อย
- ติดตั้ง Extensions swoole ลงบน php ที่เราติดตั้งไว้
- ปรับโค้ดให้เข้ากับหลักการของ Swoole ข้อกำนด การใช้ PHP Swoole
ข้อเสียข้อ Swoole
- มีการจำกัดฟังก์ชั่นบางประเภท ไม่ให้ทำงาน อ่านได้ที่บทความ ข้อกำนด การใช้ PHP Swoole กับ Laravel Framework เพื่อรองรับโหลดเยอะขึ้นอย่างน้อยสี่เท่า
- ต้องติดตั้ง Extensions เสริม เพราะไม่ได้ default มาให้ตอนติดตั้ง
- บทความสอนต่างๆ ยังมีน้อย
- ไม่รองรับ Web Server ที่เป็น Windows (สามารถใช้่ผ่าน WSL - Microsoft Windows Subsystem for Linux) หรือ Cygwin ได้นะ
- ไม่เหมาะกับผู้เริ่มต้นศึกษา PHP
- ต้องรีโหลดโค้ดทุกครั้งที่มีการแก้ไขก่อนใช้งาน
- การ Debug จะทำได้ยุ่งยากขึ้น
ข้อดีของ Swoole
- ทำงานได้เร็ว (เร็วมากๆ) การทำงานบางอย่างเร็วกว่า PHP ธรรมดา เป็นสิบเท่า
- สามารถรีดประสิทธิภาพการทำงานของ Server ออกมาได้แบบไรขีดจำกัด และทำได้ดีกว่าภาษาระดับสูงอื่นๆ
- คู่มือของเว็บหลักเขียนเข้าใจง่าย
- มีบริการ support แบบ VIP ด้วยนะ (แต่ต้องเสียตัง)
บุคคลสำหรับของ Swoole Project
- matyhtf ชาวจีน โปรไฟล์เขาบน Github, twose ชาวจีน โปรไฟล์เขาบน Github นอกจาก สองคนนี้แล้วยังมี Contributors อีกว่า 120 คน
License ของ Swoole
- เป็นเป็น apache License Version 2.0 ดูรายละเอียดเพิ่มเติมได้ที่นี่ http://www.apache.org/licenses/LICENSE-2.0.html
ติดตามการอัพเดดต่างๆ ของ Swoole บน Github ได้ที่ : https://github.com/swoole
พูดคุยเรื่อง PHP Swoole กับผู้ใช้ Swoole ในไทยได้ที่นี่
บทความที่อยากให้อ่านต่อก่อนเริ่มศึกษา Swoole อย่างจริงจัง นอกจากข้อกำหนดที่กล่าวไปตอนต้นแล้ว อีกหนึ่งบทความคือ >> เขียน API ด้วย PHP อย่างไรให้รองรับ Load มากกว่า Node.js - Swoole คือคำตอบ, ตัวอย่างการเขียน Swoole กับฐานข้อมูล MySQL เพิ่มความแรงให้เว็บไซต์ฐานข้อมูล
ข้อมูลอ้างอิง
http://rango.swoole.com
https://github.com/easy-swoole
https://www.swoole.co.uk
https://www.swoole.com
https://www.zend.com/blog/swoole