workerman介紹

WorkerMan的特性

一、純PHP開發

使用WorkerMan開發的應用程序不依賴php-fpm、apache、nginx這些容器就能夠獨立運行。 這使得PHP開發者開發、部署、調試應用程序很是方便。php

二、支持PHP多進程

爲了充分發揮服務器多CPU的性能,WorkerMan默認支持多進程多任務。WorkerMan開啓一個主進程和多個子進程對外提供服務, 主進程負責監控子進程,子進程獨自監聽網絡鏈接並接收發送及處理數據,因爲進程模型簡單,使得WorkerMan更加穩定,更加高效。html

三、支持TCP、UDP

WorkerMan支持TCP和UDP兩種傳輸層協議,只須要更改一個屬性即可以更換傳輸層協議,業務代碼無需改動。nginx

四、支持長鏈接

不少時候須要PHP應用程序要與客戶端保持長鏈接,好比聊天室、遊戲等,可是傳統的PHP容器(apache、nginx、php-fpm)很難作到這一點。 使用WorkerMan,只要服務端業務不主動調用關閉鏈接接口,即可以使用PHP長鏈接。WorkerMan單個進程能夠支持上萬的併發鏈接,多進程則支持數十萬的甚至百萬併發鏈接。數據庫

五、支持各類應用層協議

WorkerMan接口上支持各類應用層協議,包括自定義協議。在WorkerMan中更換協議一樣很是簡單,一樣只是配置一個字段,協議自動切換,業務代碼零改動,甚至能夠開啓多個不一樣協議的端口,知足不一樣的客戶端需求。apache

六、支持高併發

WorkerMan支持Libevent事件輪詢庫(須要安裝Libevent擴展), 使用Libevent在高併發時性能很是卓越,若是沒有安裝Libevent則使用PHP內置的Select相關係統調用,性能也一樣很是強悍。安全

七、支持服務平滑重啓

當須要重啓服務時(例如發佈版本),咱們不但願正在處理用戶請求的進程被馬上終止,更不但願重啓的那一刻致使客戶端通信失敗。WorkerMan提供了平滑重啓功能,可以保障服務平滑升級,不影響客戶端的使用。服務器

八、支持文件更新檢測及自動加載

在開發過程當中,咱們但願在咱們改動代碼後可以馬上生效,以便查看結果。WorkerMan提供了FileMonitor文件監控組件,只要文件有更新,WorkerMan會自動運行reload,以便加載新的文件,使之生效。網絡

九、支持以指定用戶運行子進程

由於子進程是實際處理用戶請求的進程,爲了安全考慮,子進程不能有過高的權限,因此WorkerMan支持設置子運行進程運行的用戶,使你的服務器更加安全。併發

十、支持對象或者資源永久保持

WorkerMan在運行過程當中只會載入解析一次PHP文件,而後便常駐內存,這使得類及函數聲明、PHP執行環境、符號表等不會重複建立銷燬,這與Web容器下運行的PHP機制是徹底不一樣的。在WorkerMan中,一個進程生命週期內靜態成員或者全局變量在不主動銷燬的狀況下是永久保持的,也就是將對象或者鏈接等資源放到全局變量或者類靜態成員中則當前進程的整個生命週期內的全部請求均可以複用。例如只要單個進程內初始化一次數據庫鏈接,則之後這個進程的全部請求均可以複用這個數據庫鏈接,避免了頻繁鏈接數據庫過程當中TCP三次握手、 數據庫權限驗證、斷開鏈接時TCP四次握手的過程,極大的提升了應用程序效率。tcp

十一、高性能

因爲php文件從磁盤讀取解析一次後便會常駐內存,下次使用時直接使用內存中的opcode, 極大的減小了磁盤IO及PHP中請求初始化、建立執行環境、詞法解析、語法解析、編譯opcode、請求關閉等諸多耗時過程, 而且不依賴nginx、apache等容器,少了nginx等容器與PHP通訊的開銷,最主要的是資源能夠永久保持,沒必要每次初始化數據庫鏈接等等, 因此使用WorkerMan開發應用程序,性能很是高。

十二、支持HHVM

支持在HHVM虛擬機上運行,可成倍提高PHP性能。尤爲是在cpu密集運算業務中,性能很是優異。經過實際壓力測試對比,在沒有負載業務的狀況下,WorkerMan在HHVM下運行比在Zend PHP5.6運行網絡吞吐量提升了30-80%左右

1三、支持分佈式部署

1四、支持守護進程化

1五、支持多端口監聽

1六、支持標準輸入輸出重定向

相關文章
相關標籤/搜索