php語言是單線程嗎?

來源:互聯網
上載者:User
php語言是單線程嗎?

回複內容:

php語言是單線程嗎?

準確說,是。
但也不是。
每個PHP檔案的執行是單線程的,但是,伺服器(apache/nigix/php-fpm)是多線程的。每次對某個PHP檔案的訪問伺服器都會建立一個新的進程/線程,用來執行對應的PHP檔案。
也就是說對於一個請求來說PHP是單線程的,但是多個請求間是並發的。
其實一般寫 PHP 程式認為是單線程的就可以了。多個請求之間相互的關係就是,有些時候讀寫資料庫,檔案,session等會加鎖,會導致後面的請求掛起等待前面的請求執行完才繼續。
至於協程,只能說是一種新的程式執行流程(舊的是順序,判斷,迴圈),本質是也是單線程的。

建議你先看看進程,線程的概念。
php有多進程和多線程。只不過做web的話一般接觸不到進程和線程的使用。php-fpm是進程。

通過使用pthreads擴充,你可以在cli用安全執行緒版PHP寫多線程程式。

Web上面,PHP-FPM是一個多進程的FastCGI服務,master進程epoll非同步接受請求並分發給worker進程處理。不建議在Web運行模式下使用pthreads多線程擴充,因為稍有不慎,就有可能讓PHP-FPM的worker進程崩潰或發生錯誤。多進程其實是一種非常高效的伺服器架構,比如20個核心的伺服器開40個PHP-FPM worker進程就好,避免CPU過多的環境切換開銷,佔用過多的記憶體。

現在還有協程的概念,可惜沒看懂

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.