🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### 基础知识 ##### 什么是操作码? 服务器PHP引擎解析PHP程序,会将其便意味特定的操作码文件(Operate Code ,opcode),编译好的操作码由PHP引擎执行后丢弃。 ##### 缓存原理 将编译后的操作码保存下来,放在共享内存中,以便下一次PHP页面复用,节省了PHP引擎的重复编译时间,降低了服务器负载(CPU和内存开销) ##### LNMP环境PHP缓存加速器原理 1. Nginx接受客户端的PHP程序访问请求 2. Nginx根据扩展名等过滤规则将PHP程序穿都给解析PHP的FastCGI进程(PHP-FPM) 3. PHP-PFM进程调用PHP解析器读取站点磁盘上的PHP文件,并加载到内存中 4. PHP解析器将PHP程序编译成opcode文件,然后把opcode缓存起来 5. PHP-FPM引擎执行opcode树,返回数据给Nginx,进而返回客户端 6. Nginx收到新的PHP程序请求,PHP-FPM引擎直接读取缓存中的opcode执行,节省第4步,提升了PHP编译解析效率 ![opcache原理](index_files/1.png "opcache原理") 2. 拓:PHP的MySQL扩展 http://my.oschina.net/junn/blog/204594 https://blog.linuxeye.com/395.html 传统libmysql扩展 传统的PHP访问MySQL数据库,是通过MySQL数据库的libmysql client库,这个libmysql client是用C/C++编写的,虽然一直以来PHP通过libmysql访问数据库性能也一直很好,但是却无法利用PHP本身的很多特性 mysqlnd 扩展 mysqlnd提供了和Zend引擎高度的集成性,更加快速的执行速度,更少的内存消耗,利用了PHP的Stream API,以及客户段缓存机制。由于mysqlnd是透过Zend引擎,因此提供更多高级特性,以及有效利用Zend进行加速 mysqli扩展 MySQL增强扩展,可以用于使用 MySQL4.1.3或更新版本中新的高级特性 PHP数据对象(PDO) 是PHP应用中的一个数据库抽象层规范。PDO提供了一个统一的API接口可以使得你的PHP应用不去关心具体要 连接的数据库服务器系统类型,缺点是会限制让你不能使用 后期MySQL服务端提供所有的数据库高级特性