php运行模式

Table of Contents

php运行模式

  • CGI(通用网关接口 / Common Gateway Interface)
  • FastCGI(常驻型CGI / Long-Live CGI)
  • CLI(命令行运行 / Command Line Interface)
  • Web模块模式(Apache等web服务器运行的模式)
  • ISAPI(php5.3+,废弃)

php中的CGI实现

php的CGI实现本质是以socket编程实现一个TCP或UDP协议的服务器,当启动时,
创建TCP/UDP协议的服务器的socket监听,并接收相关请求进行处理。
这只是请求的处理,在此基础上添加模块初始化,sapi初始化,模块关闭,
sapi关闭就构成了整个CGI的生命周期。

CGI

用户请求,创建CGI子进程,请求处理完后结束这个子进程;
用户请求数量非常多时,会大量占用资源;
多少请求就会有多少个CGI子进程,造成反复加载;

FastCGI

常驻型CGI,可以一直执行,只要激活后,不会每次都需要去fork一次
PHP-FPM:PHP的FastCGI进程管理器
FastCGI以独立的进程池来运行CGI
PHP-CGI计息期每进程消耗7-25M内存

SAPI

模块初始化
请求初始化
执行PHP脚本
请求结束
关闭模块

单进程:开始-》请求开始-》请求关闭-》结束SAPI
多进程:fork多个子进程分别执行
多线程:重复请求开始-》请求关闭步骤;模块初始化,模块结束只执行一次,全局变量也只初始化一次

Author: josephzeng

Last Updated 2016-05-10. Created by Emacs 24.5.1 (Org mode 8.2.10)

Validate