Swoole PHP คืออะไร

ภาพโลโก Swoole รูปช้างบนก้อนเมฆ

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 ทำงานอย่างไร

ภาพอธิบายการทำงาน ของ Swoole Master Worker

จากภาพจะเห็นว่า 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

 

License ของ Swoole

ติดตามการอัพเดดต่างๆ ของ 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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
SQL JOIN: การรวมข้อมูลจากหลายตารางในฐานข้อมูล
โดย witsarutt000 พฤ 14 มี.ค. 2024 4:07 pm บอร์ด SQL Knowledge
1
166
พฤ 14 มี.ค. 2024 5:44 pm โดย Sirayu View Topic SQL JOIN: การรวมข้อมูลจากหลายตารางในฐานข้อมูล
PHP การเปลี่ยนแปลงที่สร้างปรากฏการณ์ในโลกของเว็บ
โดย witsarutt000 พฤ 14 มี.ค. 2024 11:17 am บอร์ด PHP Knowledge
0
125
พฤ 14 มี.ค. 2024 11:17 am โดย witsarutt000 View Topic PHP การเปลี่ยนแปลงที่สร้างปรากฏการณ์ในโลกของเว็บ
ปัญหา Harddisk ขึ้น 100% เวลาเซฟไฟล์ หรือภาพ จะค้่างที่หน้าแท๊บ Expolorer
โดย Thanavat_n พ 13 มี.ค. 2024 11:02 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
5
270
พ 13 มี.ค. 2024 1:34 pm โดย Thanavat_n View Topic ปัญหา Harddisk ขึ้น 100% เวลาเซฟไฟล์ หรือภาพ จะค้่างที่หน้าแท๊บ Expolorer
ตู้รองเท้า ไอเท็มวิเศษช่วยจัดระเบียบคอลเลกชันรองเท้าคู่โปรด
โดย @Foretoday อ 12 มี.ค. 2024 1:46 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
184
อ 12 มี.ค. 2024 1:46 pm โดย @Foretoday View Topic ตู้รองเท้า ไอเท็มวิเศษช่วยจัดระเบียบคอลเลกชันรองเท้าคู่โปรด
แนะนำสถานที่น่าเที่ยวในจังหวัดชุมพรพร้อมวิธีการเดินทาง
โดย witsarutt000 จ 11 มี.ค. 2024 6:14 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
142
จ 11 มี.ค. 2024 6:14 pm โดย witsarutt000 View Topic แนะนำสถานที่น่าเที่ยวในจังหวัดชุมพรพร้อมวิธีการเดินทาง
ย้าย VM ข้าม Host ด้วย scp กรณีศึกษา Vmware ESXI
โดย mindphp อ 10 มี.ค. 2024 4:36 am บอร์ด Linux - Web Server
0
239
อ 10 มี.ค. 2024 4:36 am โดย mindphp View Topic ย้าย VM ข้าม Host ด้วย scp กรณีศึกษา Vmware ESXI
IP และ vpn (VMware)
โดย ballmykids อ 10 มี.ค. 2024 2:35 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
2
203
จ 11 มี.ค. 2024 3:19 pm โดย ballmykids View Topic IP และ vpn (VMware)
แบบนี้ต้องทำยังไง ในกรณีที่ Server เดิมเราได้ทำการ Raid 1 กับ HDD 2 ลูกแรกแล้ว
โดย Anonymous ศ 08 มี.ค. 2024 7:02 am บอร์ด ถาม - ตอบ คอมพิวเตอร์
1
166
ศ 08 มี.ค. 2024 8:12 pm โดย mindphp View Topic แบบนี้ต้องทำยังไง ในกรณีที่ Server เดิมเราได้ทำการ Raid 1 กับ HDD 2 ลูกแรกแล้ว