1. 程式人生 > >php是單執行緒還是多執行緒

php是單執行緒還是多執行緒

PHP 從設計之初到流行起來都沒有出現明顯需要用多執行緒才能解決的需求。某些需要用到多執行緒的地方也有相應的解決方案和替代方案。多執行緒並不總是比單執行緒優,多執行緒可能會引入其他問題(例如:兩個執行緒同時呼叫一個類裡的同一個方法時,可能出現死鎖的情況)。

      你可以這樣理解 對應一個客戶的一個頁面請求處理的php 是單執行緒處理的, 這樣一來就可以自上而下的去編輯/理解程式碼中的業務邏輯了, 但是 php 可以同時開很多執行緒來處理 很多使用者請求的同一個PHP , 所以 php 也可以看成是"多執行緒"的。

      每個PHP檔案的執行是單執行緒的,但是,伺服器(apache/nigix/php-fpm)是多執行緒的。每次對某個PHP檔案的訪問伺服器都會建立一個新的程序/執行緒,用來執行對應的PHP檔案。

       也就是說對於一個請求來說PHP是單執行緒的,但是多個請求間是併發的。

       其實一般寫 PHP 程式認為是單執行緒的就可以了。多個請求之間相互的關係就是,有些時候讀寫資料庫,檔案,session等會加鎖,會導致後面的請求掛起等待前面的請求執行完才繼續。

       至於協程,只能說是一種新的程式執行流程(舊的是順序,判斷,迴圈),本質是也是單執行緒的

       所以準確的說php是單執行緒的,一定程度上也可以看成是“多執行緒”!!!