apache與php工作原理分析

來源:互聯網
上載者:User

為大家介紹apache和php的工作原理。

假設有1000個人同一時刻請求php網站,這些請求傳給apache伺服器,這個時候apache伺服器是怎麼來工作的?1.建立1000個進程來處理1000個請求?2.建立很多個進程,這些進程又包含很多線程來處理1000個請求?3.其他?還有fast-cgi,和cgi及php-fpm區別。用上述例子來闡述。

延伸閱讀:

  • Nginx中的FastCGI模組(FastCGI)詳解
  • Nginx學習筆記之有關FastCGI的知識
  • php-fpm兩種進程管理員模式詳解
  • php-fpm設定檔詳解
  • 有關php-fpm的配置介紹

大家可以通過以上幾篇文章瞭解下fastcgi與php-fpm的基礎知識。下面我們來看一些概念:1、CGI和FastCGI是apache處理php指令碼的其中兩種工作模式,還有ISAPI,SAPI等2、而php-fpm並不是一種工作模式,而是一個PHP在FastCGI模式運行下的進程管理器,全稱為 PHP: FastCGI Process Manager3、怎麼工作的是看你搭建環境的時候使用哪一種工作模式來處理php指令碼,當然,少不了的還有你的apache配置(串連數,進程數,線程數等),還有就是所使用的作業系統(不同作業系統對於進程和線程的支援不同,處理能力也不同)。首先說系統層面吧,不同系統預設會使用不同的多處理模組(MPM),如下:

  1. BeOS beos
  2. Netware mpm_netware
  3. OS/2 mpmt_os2
  4. Unix prefork
  5. Windows mpm_winnt
複製代碼

可以使用apachectl -l 命令來查看當前系統使用哪一種MPM配置。 主要的區別是不同系統使用不同的配置,對於配置項的支援程度也不同。 一般包含以下這些配置項: # StartServers: initial number of server processes to start # MaxClients: maximum number of simultaneous client connecti # MinSpareThreads: minimum number of worker threads which are kept spare # MaxSpareThreads: maximum number of worker threads which are kept spare # ThreadsPerChild: ctant number of worker threads in each server process # MaxRequestsPerChild: maximum number of requests a server process serves 等等。 然後就是apache層面的東西了, 看上面的說明,什麼最大串連數啊,每個進程有多少個線程啊,每個進程處理多少個請求什麼的,都是可以配置的。怎麼處理其中一部分取決於你的配置的值。 然後就是php運行模式的層面了, 現在主流的運行模式是FastCGI,當然有很多以前的配置好的伺服器會使用其他模式,具體用命令看一下或者看apache的設定檔就知道了。下面直接貼一段我以前mark下來的內容吧: 1、CGI(通用閘道介面/Common Gateway Interface)一般是可執行程式,例如EXE檔案,和WEB伺服器各自佔據著不同的進程,而且一般一個CGI程式只能處理一個使用者請求。這樣,當用 戶請求數量非常多時,會大量佔用系統的資源,如記憶體、CPU時間等,造成效能低下。 2、ISAPI(Internet Server Application Program Interface)是微軟提供的一套面向WEB服務的API介面,它能實現CGI提供的全部功能,並在此基礎上進行了擴充,如提供了過濾器應用程式接 口。ISAPI應用大多數以DLL動態庫的形式使用,可以在被使用者請求後執行,在處理完一個使用者請求後不會馬上消失,而是繼續駐留在記憶體中等待處理別的 使用者輸入。此外,ISAPI的DLL應用程式和WEB伺服器處於同一個進程中,效率要顯著高於CGI。 3、FastCGI是可伸縮架構的CGI開放擴充,其主要行為是將CGI解譯器進程保持在記憶體中並因此獲得較高的效能。傳統的CGI解譯器的反覆載入是 CGI效能低下的主要原因,如果CGI解譯器保持在記憶體中並接受FastCGI進程管理器調度,則可以提供良好的效能、伸縮性等。 以 ISAPI 模式運行 PHP 的,這種方式最大的缺點就是穩定性不好,當 PHP 出錯的時候,Apache進程也死掉。 FastCGI 模式運行 PHP 的優點: 首先就是 PHP 出錯的時候不會搞垮 Apache,只是 PHP 自己的進程當掉(但 FastCGI 會立即重新啟動一個新 PHP 進程來代替當掉的進程)。 其次 FastCGI 模式運行 PHP 比 ISAPI 模式效能更好 最後,就是可以同時運行 PHP5 和 PHP4 綜合系統層面,apache配置層面,PHP工作模式層面來說,1000個請求是絕對不用1000個進程的,很可能只需要兩位元甚至更少的進程就能處理掉了。

  • 聯繫我們

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