1,先来看看php四层结构
第一层:Zend引擎,zend引擎都是用c写的,属于php的内核部分,每次请求的时候zend引擎都会把php代码翻译(即编译)成可执行的opcode码,并且实现了基本的数据结构(如hashtable),内存管理并且提供了api供外部调用,其它的三层都是围绕zend实现
第二层:Extensions,extensions通过组件式的方式提供各种基础服务,我们常见的各种内置函数(如array系列)、标准库等都是通过extension来实现,用户也可以根据需要实现自己的extension以达到功能扩展、性能优化等目的(如贴吧正在使用的php中间层、富文本解析就是extension的典型应用)。
第三层:Sapi,Sapi全称是Server Application Programming Interface,也就是服务端应用编程接口,sapi通过一系列钩子函数,使得php可以和外围交互数据,这是php非常优雅和成功的一个设计,通过sapi成功的将php本身和上层应用解耦隔离,php可以不再考虑如何针对不同应用进行兼容,而应用本身也可以针对自己的特点实现不同的处理方式
第四层:上层应用,上层应用这就是我们平时编写的php程序,通过不同的sapi方式得到各种各样的应用模式
2,深入分析lamp环境
①liunx 属于操作系统的底层
②apache服务器,属于次服务器,沟通linux和PHP
③php:属于服务端编程语言,通过php_module 模块 和apache关联
④mysql和其他web服务:属于应用服务,通过PHP的Extensions外 挂模块和mysql关联
3,深入理解计算机硬件和lamp的理解
CPU是工厂,硬盘是大仓库,内存是正规中转中心,虚拟内存是临时中转中心
Php语言由zend编译成机器语言,操作cpu
对数据库的操作属于I/O操作,属于机械运动,也就是说一个网站的瓶颈再去对硬盘的读写造成的,解决办法就是减少i/o操作次数,使用缓冲技术,就是在数据的操作放在mencache里面,达到一定数量级的时候在一次性写入数据库,mencache属于key--value关系
而非关系型数据也是基于这个理念建设的,也是属于key--value关系
频繁读操作------放在mencache里面
读多写少----放在nosql里面------读取功能很强大!