PHP 從設計之初到流行起來都沒有出現明顯需要用多執行緒才能解決的需求。
某些需要用到多執行緒的地方也有對應的解決方案和替代方案。 (推薦學習:PHP程式設計從入門到精通)
多執行緒並不總是比單執行緒優,多執行緒可能會引入其他問題(例如:兩個執行緒同時呼叫一個類別裡的同一個方法時,可能出現死鎖的情況)。
你可以這樣理解對應一個客戶的一個頁面請求處理的php 是單線程處理的, 這樣一來就可以自上而下的去編輯/理解程式碼中的業務邏輯了,但php 可以同時開很多執行緒來處理很多使用者請求的同一個PHP , 所以php 也可以看成是"多執行緒"的。
每個PHP檔案的執行是單執行緒的,但是,伺服器(apache/nigix/php-fpm)是多執行緒的。每次對某個PHP檔案的存取伺服器都會建立一個新的進程/線程,用來執行對應的PHP檔案。
也就是說對於一個請求來說PHP是單執行緒的,但多個請求間是並發的。
其實一般寫PHP程式認為是單執行緒的就可以了;多個請求之間相互的關係就是,有些時候讀寫資料庫,文件,session等會加鎖,會導致後面的請求掛起等待前面的請求執行完才繼續。
至於協程,只能說是一種新的程式執行流程(舊的是順序,判斷,循環),本質是也是單一執行緒的
#所以準確的說php是單線程的,一定程度上也可以看成是「多線程」! ! !
以上是php是單線程還是多線程的詳細內容。更多資訊請關注PHP中文網其他相關文章!