PHP是單線程還是多線程?

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


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

      每個PHP文件的執行是單線程的,但是,服務器(apache/nigix/php-fpm)是多線程的。每次對某個PHP文件的訪問服務器都會創建一個新的進程/線程,用來執行對應的PHP文件。


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


       其實一般寫 PHP 程序認爲是單線程的就可以了。多個請求之間相互的關係就是,有些時候讀寫數據庫,文件,session等會加鎖,會導致後面的請求掛起等待前面的請求執行完才繼續。


       至於協程,只能說是一種新的程序執行流程(舊的是順序,判斷,循環),本質是也是單線程的

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章