PHP服务缓存加速优化实战


(1) 操作码介绍及缓存原理:

当客户端请求一个PHP程序的时候,服务器的 PHP 引擎会解析该 PHP 程序,并将其编译为特定的操作码(Operate Code)文件。

该文件是执行PHP代码后的一种二进制表示形式。

默认情况下,这个编译好的操作码文件由 PHP 引擎执行后进行丢弃。

操作码文件缓存机制就是将编译还的文件保存下来,并放到共享内存中,以便于下一次调用该PHP页面的时候重用它,避免了相同的代码重复度,节省了 PHP 引擎重复编译的时间。

降低了服务器负载,同时减少了服务器的 CPU 和内存的开销。


LAMP 环境 PHP 缓存加速器的原理:

在 LNMP 中,Apache 服务是使用 libphp5.so 响应处理 PHP 程序请求的。

1. Apache 服务接受客户的 PHP 程序请求,并根据规则进行过滤。

2. Apache 将 PHP 程序请求传递给 PHP 处理模块 libphp5.so。

3. PHP引擎定位磁盘上的 PHP 文件,并将其加载到内存中解析。

4. PHP 处理模块 libphp5.so 将 PHP 源码编译成 opcode。

5. Apache 接收客户端新的 PHP 请求,PHP 编译解析并将结果返回。


LNMP 环境 PHP 缓存加速器的原理:

在 LNMP 中不再使用 libphp5.so 模块了,而是启动独立的 FCGI 进程,就是 php-fpm,由它来监听来自 Nginx 的 PHP 程序请求,交给 PHP 引擎进行处理。

1. Nginx 接收客户端的 PHP 程序访问请求。

2. Nginx 根据扩展名等过滤规则进行将 PHP 程序传递给解析 PHP 程序的 FCGI 进程。

3. PHP FPM 进程调用 PHP 解析器读取磁盘上的 PHP 文件,并加载到内存中。

4. PHP 解析器将 PHP 程序编译成为 opcode 文件,然后把 opcode 缓存起来。

5. PHP FPM 引擎执行 opcode 树后,返回数据给 Nginx,进而返回客户端。

6. Nginx 接收新的客户端请求,PHP FPM 引擎就会直接读取缓存起来的 opcode 并执行。

7. 将结果返回。


PHP 加速软件的选择:

PHP 缓存加速器软件常见的有 XCache、eAccelerator、APC(Alternative PHP Cache)、ZendOpcache 等。

首选 Xcache,其次是 eAccelerator。

原因: