คุณสมบัติของ Workerman
1. พัฒนาโดยใช้ PHP ล้วน
แอปพลิเคชันที่พัฒนาด้วย Workerman สามารถทำงานได้โดยไม่ต้องพึ่งพา php-fpm, apache, nginx หรือตู้คอนเทนเนอร์อื่นๆ ซึ่งทำให้การพัฒนา, เปิดใช้งาน, และการดีบักแอปพลิเคชันของนักพัฒนา PHP สะดวกสบายมากยิ่งขึ้น
2. รองรับ PHP หลายกระบวนการ
เพื่อให้ใช้ประโยชน์จากประสิทธิภาพของ CPU หลายตัวในเซิร์ฟเวอร์ Workerman รองรับการใช้หลายกระบวนการและหลายงานตามค่าเริ่มต้น โดยจะเปิดกระบวนการหลักและกระบวนการย่อยมากมายเพื่อให้บริการ กระบวนการหลักจะมีหน้าที่ติดตามกระบวนการย่อย ขณะที่กระบวนการย่อยจะทำงานแยกกันในการฟังการเชื่อมต่อเครือข่าย และรับ ส่ง และประมวลผลข้อมูล เนื่องจากรูปแบบของกระบวนการที่ง่าย ทำให้ Workerman มีความเสถียรและมีประสิทธิภาพมากขึ้น
3. รองรับ TCP และ UDP
Workerman รองรับโปรโตคอลชั้นส่งสองประเภท คือ TCP และ UDP ซึ่งสามารถเปลี่ยนโปรโตคอลการส่งได้เพียงแค่เปลี่ยนคุณสมบัติหนึ่ง ตัวโค้ดธุรกิจก็ไม่ต้องมีการเปลี่ยนแปลงใดๆ
4. รองรับการเชื่อมต่อแบบยาว
ในหลายๆ ครั้งที่แอปพลิเคชัน PHP ต้องการรักษาการเชื่อมต่อแบบยาวกับไคลเอนต์ เช่น ห้องสนทนา เกม เป็นต้น แต่ตู้คอนเทนเนอร์ PHP แบบดั้งเดิม (apache, nginx, php-fpm) มักทำได้ยาก ด้วยการใช้ Workerman หากไม่มีการเรียกใช้ฟังก์ชันปิดการเชื่อมต่อจากธุรกิจเซิร์ฟเวอร์ ก็สามารถใช้การเชื่อมต่อแบบยาวใน PHP ได้ โดยกระบวนการเดียวของ Workerman สามารถรองรับการเชื่อมต่อพร้อมกันได้มากถึงหลายหมื่นการเชื่อมต่อ ขณะที่หลายกระบวนการสามารถรองรับการเชื่อมต่อพร้อมกันหลายแสนถึงหนึ่งล้านการเชื่อมต่อ
5. รองรับโปรโตคอลชั้นแอปพลิเคชันหลากหลาย
Workerman รองรับโปรโตคอลชั้นแอปพลิเคชันหลากหลาย รวมถึงโปรโตคอลที่กำหนดเอง ใน Workerman การเปลี่ยนโปรโตคอลก็ง่ายมาก เพียงแค่กำหนดค่าฟิลด์หนึ่งฟิลด์ โปรโตคอลจะเปลี่ยนโดยอัตโนมัติ โดยโค้ดธุรกิจไม่ต้องมีการปรับเปลี่ยนใดๆ และยังสามารถเปิดพอร์ตที่ใช้โปรโตคอลต่างๆ ได้หลายพอร์ตเพื่อรองรับความต้องการของลูกค้าที่แตกต่างกัน
6. รองรับการใช้งานในปริมาณมาก
Workerman รองรับไลบรารีการวนรอบเหตุการณ์ Libevent (ต้องติดตั้ง event extension) การใช้ Event ในการเชื่อมต่อแบบยาวที่มีปริมาณการใช้งานมากจะทำให้ประสิทธิภาพยอดเยี่ยมมาก ถ้าหากไม่ได้ติดตั้ง Event extension จะใช้การเรียกระบบ Select ที่ PHP มีให้อยู่แล้ว ซึ่งประสิทธิภาพก็ยอดเยี่ยมเช่นกัน
7. รองรับการรีสตาร์ทบริการอย่างราบรื่น
เมื่อจำเป็นต้องรีสตาร์ทบริการ (เช่น การปล่อยเวอร์ชัน) เราไม่ต้องการให้กระบวนการที่กำลังจัดการคำขอของผู้ใช้ถูกยกเลิกทันที และยิ่งไม่ต้องการให้การรีสตาร์ทในช่วงนั้นทำให้การสื่อสารของไคลเอนต์ล้มเหลว Workerman ให้ความสามารถในการรีสตาร์ทอย่างราบรื่น เพื่อให้บริการอัปเกรดได้อย่างราบรื่น ไม่กระทบต่อการใช้งานของไคลเอนต์
8. รองรับการตรวจสอบและโหลดไฟล์อัตโนมัติ
ในระหว่างการพัฒนา เราหวังว่าจะสามารถทำให้การเปลี่ยนแปลงโค้ดมีผลทันที เพื่อดูผลลัพธ์ Workerman มี FileMonitor เพื่อเฝ้าติดตามไฟล์ เมื่อมีการอัปเดตไฟล์ Workerman จะทำการเรียกใช้ reload โดยอัตโนมัติเพื่อโหลดไฟล์ใหม่ ทำให้มีผลทันที
9. รองรับการทำงานของกระบวนการย่อยโดยผู้ใช้ที่กำหนด
เพราะกระบวนการย่อยเป็นกระบวนการที่จัดการคำขอจากผู้ใช้จริง ๆ เพื่อความปลอดภัย กระบวนการย่อยไม่ควรมีสิทธิ์สูงเกินไป ดังนั้น Workerman จึงรองรับการตั้งค่าผู้ใช้ในการทำงานของกระบวนการย่อยเพื่อทำให้เซิร์ฟเวอร์ของคุณมีความปลอดภัยมากขึ้น
10. รองรับการรักษาวัตถุหรือทรัพยากรไว้เป็นประจำ
Workerman จะโหลดและวิเคราะห์ไฟล์ PHP เพียงครั้งเดียวในระหว่างการทำงาน จากนั้นจะคงอยู่ในหน่วยความจำ ซึ่งทำให้การประกาศคลาสและฟังก์ชัน สภาพแวดล้อมการทำงานของ PHP และตารางสัญลักษณ์ไม่ถูกสร้างและทำลายซ้ำ และนี่แตกต่างจากกลไก PHP ที่ทำงานอยู่ใต้เว็บคอนเทนเนอร์ ใน Workerman วัตถุสมาชิกนิ่งหรือตัวแปรทั่วไปรักษาไว้ตลอดทั้งวงรอบชีวิตของกระบวนการ หากไม่ถูกยกเลิก จึงสามารถใช้ซ้ำได้ตลอดวงจรชีวิตของกระบวนการนั้น ๆ ตัวอย่างเช่น หากตั้งค่าการเชื่อมต่อฐานข้อมูลเพียงครั้งเดียวภายในกระบวนการเดียว การร้องขอทั้งหมดในกระบวนการนี้สามารถใช้การเชื่อมต่อฐานข้อมูลนี้ได้ โดยหลีกเลี่ยงการเชื่อมต่อฐานข้อมูลบ่อย ๆ รวมถึงการจับมือ TCP สามครั้ง การตรวจสอบสิทธิ์ฐานข้อมูล และการเชื่อมต่อที่ถูกตัดการเชื่อมต่อซึ่งจะมีการจับมือ TCP สี่ครั้ง ทำให้ประสิทธิภาพของแอปพลิเคชันสูงขึ้นอย่างมาก
11. ประสิทธิภาพสูง
เนื่องจากไฟล์ PHP จะถูกอ่านและวิเคราะห์จากดิสก์เพียงครั้งเดียวและคงอยู่ในหน่วยความจำ ในครั้งถัดไปที่ใช้งานจะใช้ opcode ที่อยู่ในหน่วยความจำ مماช่วยลด I/O ของดิสก์และกระบวนการเริ่มต้นคำขอใน PHP ทั้งหลายได้มากมาย เช่น การสร้างสิ่งแวดล้อมการทำงาน การวิเคราะห์ทางไวยากรณ์ การแปล opcode และการปิดคำขอ เพิ่มประสิทธิภาพด้วย ไม่ต้องพึ่งพา nginx, apache หรือตู้คอนเทนเนอร์อื่น ๆ ลดค่าใช้จ่ายในการสื่อสารระหว่าง nginx กับ PHP ที่สำคัญคือ ทรัพยากรสามารถถูกเก็บรักษาไว้เป็นประจำ ไม่ต้องเริ่มการเชื่อมต่อฐานข้อมูลใหม่ทุกครั้ง เพราะฉะนั้นการใช้ Workerman ในการพัฒนาแอปพลิเคชันจะมีประสิทธิภาพสูงมาก
12. รองรับ HHVM
รองรับการทำงานบน HHVM ซึ่งสามารถเพิ่มประสิทธิภาพ PHP ได้หลายเท่า โดยเฉพาะในธุรกิจที่ต้องการการคำนวณ CPU สูง ประสิทธิภาพดีเยี่ยม ผ่านการทดสอบจริงๆ การเปรียบเทียบ โดยในสภาวะที่ไม่มีภาระการทำงาน Workerman จะมีปริมาณการใช้งานสุทธิที่สูงขึ้นประมาณ 30-80% เมื่อทำงานอยู่ใต้ HHVM เมื่อเปรียบเทียบกับ Zend PHP 5.6