PHP缓存加速器原理
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编译解析效率。