workerman是一款純PHP開發的開源高性能的PHP socket 服務框架。
實際上Workerman類似一個PHP版本的nginx,核心也是多進程+Epoll+非阻塞IO。Workerman每個進程能維持上萬并發連接。由于本身常住內存,不依賴Apache、nginx、php-fpm這些容器,擁有超高的性能。? ? ? ?(推薦學習: workerman教程)
同時支持TCP、UDP、UNIXSOCKET,支持長連接,支持Websocket、HTTP、WSS、HTTPS等通訊協以及各種自定義協議。擁有定時器、異步socket客戶端、異步Mysql、異步Redis、異步Http、異步消息隊列等眾多高性能組件。
1、純PHP開發
使用WorkerMan開發的應用程序不依賴php-fpm、apache、nginx這些容器就可以獨立運行。 這使得PHP開發者開發、部署、調試應用程序非常方便。
2、支持PHP多進程
為了充分發揮服務器多CPU的性能,WorkerMan默認支持多進程多任務。WorkerMan開啟一個主進程和多個子進程對外提供服務, 主進程負責監控子進程,子進程獨自監聽網絡連接并接收發送及處理數據,由于進程模型簡單,使得WorkerMan更加穩定,更加高效。
3、支持TCP、UDP
WorkerMan支持TCP和UDP兩種傳輸層協議,只需要更改一個屬性便可以更換傳輸層協議,業務代碼無需改動。
4、支持長連接
很多時候需要PHP應用程序要與客戶端保持長連接,比如聊天室、游戲等,但是傳統的PHP容器(apache、nginx、php-fpm)很難做到這一點。?
使用WorkerMan,只要服務端業務不主動調用關閉連接接口,便可以使用PHP長連接。WorkerMan單個進程可以支持上萬的并發連接,多進程則支持數十萬的甚至百萬并發連接。
5、支持各種應用層協議
WorkerMan接口上支持各種應用層協議,包括自定義協議。在WorkerMan中更換協議同樣非常簡單,同樣只是配置一個字段,協議自動切換,業務代碼零改動,甚至可以開啟多個不同協議的端口,滿足不同的客戶端需求。
6、支持高并發
WorkerMan支持Libevent事件輪詢庫(需要安裝Libevent擴展), 使用Libevent在高并發時性能非常卓越,如果沒有安裝Libevent則使用PHP內置的Select相關系統調用,性能也同樣非常強悍。