LAMP環境的PHP緩存加速器原理
在LAMP環境中,Apache服務是使用libphp5.so響應處理PHP程序請求的,整個流程如下:
1、Apache接收客戶端的PHP程序請求並根據規則過濾。
2、Apache將PHP程序請求傳遞給PHP處理模塊libphp5.so
3、PHP引擎定位磁盤上的PHP文件,並將其加載到內存中解析
4、PHP處理模塊libphp5.so將PHP源代碼編譯成爲opcode
5、PHP處理模塊libphp5.so執行opcode,然後把opcode緩存起來
6、Apache接收客戶端新的PHP程序請求,PHP引擎直接讀取緩存執行opcode文件,並將結果返回。在這一次任務中,就無第4步的編譯解析了,從而提升了PHP編譯解析效率
LNMP環境PHP緩存加速器原理
在LNMP環境中,PHP引擎不再使用libphp5.so模塊了,而是啓動了獨立的FCGI即php-fpm進程,由它監聽來自nginx的PHP程序請求,並交給PHP引擎解析處理,整個執行流程大概如下:
1)Nginx接收客戶端的PHP程序訪問請求。
2)Nginx根據擴展名等過濾規則將PHP程序請求傳遞給解析PHP的FCGI進程(PHP-FPM)
3)PHP FPM進程調用PHP解析器讀取站點磁盤上的PHP文件,並加載到內存中。
4)PHP解析器將PHP程序編譯爲opcode文件,然後把opcode緩存起來。
5)PHP FPM引擎執行opcode樹,返回數據給Nginx,進而返回客戶端。
6)Nginx 接收客戶新的PHP程序請求,PHP FPM引擎就會直接讀取緩存中的opcode執行,將結果返回,該過程中無需第4步操作,從而提升了PHP編譯解析效率。