4. PHP原理
最后更新于:2022-04-02 07:47:05
#### 基础知识
##### 什么是操作码?
服务器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编译解析效率

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服务端提供所有的数据库高级特性
';