一个PHP实例,无论是从init脚本中调用的,还是从命令行启动的,都会向我们上一节说的那样,依次进行Module init、Request init、Request Shutdown、Module shutdown四个过程,当然之间还会执行脚本自己的逻辑。那么两种init和两种shutdown各会执行多少次、各自的执行频率有多少呢?这取决与PHP是用什么sapi与宿主通信的。最常见的四种方式如下所列:
- 直接以CLI/CGI模式调用
- 多进程模块
- 多线程模
- Embedded(嵌入式,在自己的C程序中调用Zend Engine)
1、CLI/CGI
CLI和CGI的SAPI是相当特殊的,因为这时PHP的生命周期完全在一个单独的请求中完成。虽然简单,不过我们以前提过的两种init和两种shutdown仍然都会被执行。图1.1展示了PHP在这种模式下是怎么工作的。
2、多进程模式
[ps:书是2006年出版的,所以你应该理解作者说多进程是主流]PHP最常见的工作方式便是编译成为Apache2 的Pre-fork MPM或者Apache1 的APXS 模式,其它/laruence.com/2008/09/23/539.html">Laruence大哥的使用PHP Embed SAPI实现Opcodes查看器