apeach和php合作原理,apache与php工作原理分析
為大家介紹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 Manager
3、怎么工作的是看你搭建環境的時候使用哪一種工作模式來處理php腳本,當然,少不了的還有你的apache配置(連接數,進程數,線程數等),還有就是所使用的操作系統(不同操作系統對于進程和線程的支持不同,處理能力也不同)。
首先說系統層面吧,不同系統默認會使用不同的多處理模塊(MPM),如下:
BeOS beos
Netware mpm_netware
OS/2 mpmt_os2
Unix prefork
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個進程的,很可能只需要兩位數甚至更少的進程就能處理掉了。
總結
以上是生活随笔為你收集整理的apeach和php合作原理,apache与php工作原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php网站需要装zend吗,php-ze
- 下一篇: PHP 函数调用次数,php获取页面执行