為什么workerman擁有卓越的性能

workerman 運行機制
workerman請求執行周期

避免讀取磁盤和反復編譯

Yy4080私人影院 workerman運行過程中,單個進程生命周期內只要PHP文件被載入編譯過一次,便會常駐內存,不會再去從磁盤讀取或者再去編譯。 workerman省去了重復的請求初始化、創建執行環境、詞法解析、語法解析、編譯生成opcode以及請求關閉等諸多耗時的步驟。 實際上workerman運行起來后便幾乎沒有磁盤IO及PHP文件編譯開銷,剩下的只是簡單的計算過程,這使得workerman運行飛快。

數據或者資源可以全局共享

workerman中多個請求是可以共享數據或者資源的,當前請求產生的全局變量或者類的靜態成員在下一次請求中仍然有效。 這對于減少開銷,提高運行效率非常有用。例如業務只要初始化一次數據庫連接,那么全局都可以共享這個連接,這實現了真正意義上的數據庫長連接。 從而不必每次用戶請求都去創建新的連接,避免了連接時三次握手、連接后權限驗證以及斷開連接時四次揮手等耗時的交互過程。不僅數據庫,像redis、 memcache等同樣有效。少了這些開銷和網絡交互,使得workerman運行更快。

沒有多余的網絡開銷

Yy4080私人影院 傳統PHP應用程序需要借助apache、nginx等容器才能對外提供網絡服務,這就導致多了一層apache、nginx等容器到PHP進程的數據傳輸開銷。 并且由于運行了apache或者nginx容器,這將進一步消耗服務器的資源。 workerman便沒有這部分開銷,這是由于workerman自身便是一個服務器容器具有PHP進程管理以及網絡通訊功能, 完全不依賴于apache、nginx、php-fpm等這些容器便可以獨立運行,所以性能更高。

進程模型簡單

workerman是多進程(也有多線程版本)的,可以充分利用服務器多核資源。并且workerman具有簡單的進程模型,主進程只負責監控子進程,而每個子進程獨自接受維護客戶端的連接,獨自讀取連接上發來的數據,獨自處理。 子進程間默認沒有任何數據通訊,主進程和子進程之間只有一次信號通訊。簡單的進程通訊模型使得workerman相比其它復雜的進程模型的軟件更高效。

workerman 進程模型
workerman進程模型

相關連接

Yy4080私人影院版權所有 成都風禾網絡科技有限公司


Powered by web-msg-sender!




聯系我們
  • QQ群1:257046084 (2000人已滿)
    QQ群2:137410824 (2000人已滿)
    QQ群3:527941005 (2000人已滿)
    QQ群4:172789145 (2000人已滿)
    QQ群5:605328640 (2000人已滿)
    QQ群6:532976970 (2000人已滿)
    QQ群7:679148501 (2000人已滿)
    QQ群8:812483358 (2000人已滿)
    QQ群9:645569639 (2000人已滿)
    QQ群10:549059456 (2000人)
    游戲開發群:564297822(2000人)
    提示:一個人只能加一個群哦
    郵箱:walkor#workerman.net