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