假設當前負載較小,prefork模式下的apache維持的最小空閑進程數的處理能力完全能滿足請求量,也就是說這些進程在沒有達到MaxRequestsPerChild時不會被回收銷毀。那么這些常住內存的php_mod進程是否等同于php-fpm里的常住內存的fast-cgi進程呢?他們持有資源是否相同?我自己理解的php的fast-cgi進程創建時載入php解釋器,php.ini和各項依賴創建好php的執行環境并持有,處理請求時只需重復的載入需要處理的php腳本即可。那apache的php_mod都載入了什么?是同php的fast-cgi所持有的相同,還是說只是個引導模塊,請求到達時才會去載入php解釋器,php.ini和各項依賴,即使apache沒有回收此進程,它在處理完請求后也會釋放所持有的php的所有資源,下個請求到來時重新載入php解釋器,phpini和各項依賴,只不過apache節省了創建進程的開支,和php相關的東西都會被一次次的重新載入?說了這么多,其實就一句話:php_mod進程有沒有預加載并持有php執行的環境,請求到達時只需要載入相應的php腳本即可,還是說php_mod進程每次都要重復的初始化php的執行環境?
apache php_mod 和 php-fpm fast-cgi 的處理php請求時初始化執行環境的區別
開心每一天1111
2019-05-23 18:17:11
