socket - 使用php多線程 , 多進程??

來源:互聯網
上載者:User

I. php 多進程的使用方式怎樣?? (絕大多數php程式都用上了 | 幾乎用不上)

II. php 多線程的使用方式怎樣?? (絕大多數php程式都用上了 | 幾乎用不上)

III. php 多進程 , php多線程 相比較 java 怎樣??(簡直糟透了 | 不相上下)

網路上幾乎都寫到 php 不適合多線程(是否也不適合多進程??),是否這樣就不需要瞭解多線程,多進程之類的php相關特性了??

然後最近由於個人喜好,想自己動手做一個 類似qq的網頁版聊天工具,現在 基本上瞭解了 socket 通訊 , 但 瞭解了下 workerman 這樣的開源 通訊架構,他的特性介紹裡麵包括以下幾個:

I. php多進程 可以發揮多核cpu優勢,提高效能,並支援高並發??

II . php單個進程可以支援幾千甚至幾萬的並發串連,多進程則可以支援數十萬甚至上百萬的並發串連。 這句話該怎麼理解?? 由於它採用的是 socket 的方式進行通訊,那麼連接埠數實際上是已經固定的,不會超過 65536 ,一個連接埠表示一對串連,這邊說的 幾千 -》 幾萬可能還好一點, 多進程下的 數十萬,上百萬,有那麼 厲害嗎??

回複內容:

I. php 多進程的使用方式怎樣?? (絕大多數php程式都用上了 | 幾乎用不上)

II. php 多線程的使用方式怎樣?? (絕大多數php程式都用上了 | 幾乎用不上)

III. php 多進程 , php多線程 相比較 java 怎樣??(簡直糟透了 | 不相上下)

網路上幾乎都寫到 php 不適合多線程(是否也不適合多進程??),是否這樣就不需要瞭解多線程,多進程之類的php相關特性了??

然後最近由於個人喜好,想自己動手做一個 類似qq的網頁版聊天工具,現在 基本上瞭解了 socket 通訊 , 但 瞭解了下 workerman 這樣的開源 通訊架構,他的特性介紹裡麵包括以下幾個:

I. php多進程 可以發揮多核cpu優勢,提高效能,並支援高並發??

II . php單個進程可以支援幾千甚至幾萬的並發串連,多進程則可以支援數十萬甚至上百萬的並發串連。 這句話該怎麼理解?? 由於它採用的是 socket 的方式進行通訊,那麼連接埠數實際上是已經固定的,不會超過 65536 ,一個連接埠表示一對串連,這邊說的 幾千 -》 幾萬可能還好一點, 多進程下的 數十萬,上百萬,有那麼 厲害嗎??

糾正一個概念:連接埠總數是一個unsigned short,即65535。這不代表一個伺服器只能支撐這麼多串連!一個連接埠對應一個進程,一個進程的串連數更這個進程開啟的socket描述符的數量是一致的。而描述符的數量是32位int數量級,當然系統有進程最多描述符的限制,可以通過核心參數來配置,但上個幾十萬肯定沒問題的。

一個典型的多進程http伺服器的工作原理大概是這樣的:一個進程負責監聽80連接埠的串連,當串連到來後,對應的描述符被核心建立出來,然後進程找一個相對閒置子進程來處理這個描述符,即在這個描述符上讀寫資料。注意這裡是子進程,正是因為子進程,才可以在父子進程間傳遞描述符。如果訪問量上來了,子進程的數量不夠了,父進程可以酌情建立新的子進程來處理描述符;父進程在一定程度上應當實現簡單的Server Load Balancer策略。

基於多線程的http伺服器工作原理其實差不多,把上面的進程改成線程一樣可以解釋。

以上闡述跟php沒有關係,php只不過是在這些底層的概念和系統調用上封裝了而已。大多數人使用php是基於php的指令碼解譯器。而workerman應該是基於php封裝的系統調用實現的http服務。

  • php進程是由php-fpm(fastcgi的實現)管理:master進程會把請求分發到子進程

    • master進程:服務與web server通訊

      • 通訊實現方式一:http socket(主機+連接埠),會佔用一個連接埠,所以也就是說這裡php-fpm只佔用一個連接埠

      • 通訊實現方式二:unix domain socket(處理序間通訊),是基於.sock檔案的方式,不依賴網路通訊協定,所以也就是說理論上不佔用連接埠

    • pool進程:子進程,含解析器,解析指令碼

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.