php 單執行緒

2021-09-24 20:07:57 字數 487 閱讀 5429

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

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

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

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

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

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

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

php 從設計之初到流行起來都沒有出現明顯需要用多執行緒才能解決的需求。多執行緒並不總是比單執行緒優,多執行緒可能會引入其他問題 例如 兩個執行緒同時呼叫乙個類裡的同乙個方法時,可能出現死鎖的情況 你可以這樣理解對應乙個客戶的乙個頁面請求處理的php 是單執行緒處理的,這樣一來就可以自上而下的去編輯...

Redis單執行緒

redis 的單執行緒主要是指 redis 的網路 io 和鍵值對讀寫是由乙個執行緒來完成的,這也是 redis 對外提供鍵值儲存服務的主要流程。當多個客戶端發起命令,這些命令併發執行時,在redis內部,會排隊逐個執行,也就是執行命令的那個操作是由乙個執行緒執行的。但 redis 的其他功能,比如...

單執行緒時代

了解了 reactor 模式後,你可能會有乙個疑問,這個和我們今天的主題有什麼關係呢。可能你不知道的是,redis 是基於 reactor 單執行緒模式來實現的。io多路復用程式接收到使用者的請求後,全部推送到乙個佇列裡,交給檔案分派器。對於後續的操作,和在 reactor 單執行緒實現方案裡看到的...