nginx - PHP的進程問題

來源:互聯網
上載者:User
有人說PHP單進程的,我理解的單進程就是同時只能處理一個檔案如果並發需要排隊,PHP到底是多個進程單進程的?
如果是單進程為什麼會出現下面這些問題?
1.http://segmentfault.com/q/1010000002951092
2.http://segmentfault.com/q/1010000003975704
又提過一個這個貼子說多進程的
http://segmentfault.com/q/1010000002998618

回複內容:

有人說PHP單進程的,我理解的單進程就是同時只能處理一個檔案如果並發需要排隊,PHP到底是多個進程單進程的?
如果是單進程為什麼會出現下面這些問題?
1.http://segmentfault.com/q/1010000002951092
2.http://segmentfault.com/q/1010000003975704
又提過一個這個貼子說多進程的
http://segmentfault.com/q/1010000002998618

拿PHP-FPM來說吧,PHP-FPM是一個多進程架構的服務,一個背景工作處理序(子進程)在同一時刻只能處理一個請求,也就是說,如果你只開啟了一個背景工作處理序(pm.max_children = 1),這時來了2個請求,那麼這2個請求是按時間先後被這個背景工作處理序處理的。建議看看我總結的PHP FastCGI進程管理器PHP-FPM的架構, 利用PHP-FPM提供的池的隔離性,分離計算密集和I/O密集操作,減少阻塞對整個PHP應用的影響。

又比如Linux上2.4系列的Apache,預設的event MPM是一個多進程多線程epoll事件驅動的架構,PHP需要編譯成安全執行緒(--enable-maintainer-zts)版本,才能跟Apache event MPM協作。這種情況下,Apache的背景工作處理序(多個)裡的線程(多個)會調用PHP解譯器libphp5.so、libphp7.so處理請求,對於一個線程裡的PHP解譯器來說,在同一時刻只能處理一個請求,這點依舊是不變的。另外,Windows上Apache的winnt MPM也是一個多線程(不過是單進程)架構,PHP工作原理類似。

至於命令列裡的PHP,如果你使用了swoole擴充,因為swoole自身就提供了一套多進程多線程事件驅動的架構,這時就是多線程的。如果編程者調用了pthreads擴充,這時也是一個多線程程式。如果調用了pcntl擴充,則是一個多進程程式。否則正常情況下,就是一個單進程的程式。

單獨的PHP程式是單進程的,也正如你說的同時只能處理一個請求,其他請求要排隊。正因如此,伺服器軟體(如Apache等)為了保證並發,會開起多個PHP進程同時處理請求。FastCGI php-fpm也是開始多個php進程來處理請求的。
另外,在IIS等伺服器軟體裡,還有一種多線程PHP模式,通過開設線程的方法來並發處理請求。

具體來說是那種模型需要看使用的是哪個SAPI,比如說在Apache中,那麼就可能使用多執行緒模式, 也可能使用多進程模型。而php-fpm使用的就是多進程模型。

轉自:《深入理解php核心》
第八章 安全執行緒 » 第二節 線程,進程和並發
http://www.php-internals.com/book/?p=chapt08/08-02-thread-process-and-concurrent

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.