您好,登錄后才能下訂單哦!
小編給大家分享一下WorkerMan有哪些特性,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
WorkerMan的特性
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相關系統調用,性能也同樣非常強悍。
7、支持服務平滑重啟
當需要重啟服務時(例如發布版本),我們不希望正在處理用戶請求的進程被立刻終止,更不希望重啟的那一刻導致客戶端通訊失敗。WorkerMan提供了平滑重啟功能,能夠保障服務平滑升級,不影響客戶端的使用。
8、支持文件更新檢測及自動加載
在開發過程中,我們希望在我們改動代碼后能夠立刻生效,以便查看結果。WorkerMan提供了FileMonitor文件監控組件,只要文件有更新,WorkerMan會自動運行reload,以便加載新的文件,使之生效。
9、支持以指定用戶運行子進程
因為子進程是實際處理用戶請求的進程,為了安全考慮,子進程不能有太高的權限,所以WorkerMan支持設置子運行進程運行的用戶,使你的服務器更加安全。
10、支持對象或者資源永久保持
WorkerMan在運行過程中只會載入解析一次PHP文件,然后便常駐內存,這使得類及函數聲明、PHP執行環境、符號表等不會重復創建銷毀,這與Web容器下運行的PHP機制是完全不同的。
在WorkerMan中,一個進程生命周期內靜態成員或者全局變量在不主動銷毀的情況下是永久保持的,也就是將對象或者連接等資源放到全局變量或者類靜態成員中則當前進程的整個生命周期內的所有請求都可以復用。
例如只要單個進程內初始化一次數據庫連接,則以后這個進程的所有請求都可以復用這個數據庫連接,避免了頻繁連接數據庫過程中TCP三次握手、 數據庫權限驗證、斷開連接時TCP四次握手的過程,極大的提高了應用程序效率。
11、高性能
由于php文件從磁盤讀取解析一次后便會常駐內存,下次使用時直接使用內存中的opcode, 極大的減少了磁盤IO及PHP中請求初始化、創建執行環境、詞法解析、語法解析、編譯opcode、請求關閉等諸多耗時過程, 并且不依賴nginx、apache等容器,少了nginx等容器與PHP通信的開銷,最主要的是資源可以永久保持,不必每次初始化數據庫連接等等, 所以使用WorkerMan開發應用程序,性能非常高。
12、支持HHVM
支持在HHVM虛擬機上運行,可成倍提升PHP性能。尤其是在cpu密集運算業務中,性能非常優異。通過實際壓力測試對比,在沒有負載業務的情況下,WorkerMan在HHVM下運行比在Zend PHP5.6運行網絡吞吐量提高了30-80%左右
以上是“WorkerMan有哪些特性”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。