cgi协议模式 通用网关接口
- web服务器接收请求->fork子进程调用程序/执行程序->程序返回内容->程序调用结束->web服务器接收内容,返回给用户,由于每次请求,都得fork创建进程调用一次程序,然后销毁进程,性能较低;
fastcgi协议模式 通用网关接口
- fastcgi是cli模式的升级版,是一个常驻型的cig,开启后,就一直处理请求,不在需要结束进程,web请求->服务器接收请求->交给fast-cgi进程管理器->fastcgi进程管理区接收,给其中一个空闲fastcgi进程处理,处理完成fastcgi进程变为空闲状态,等待下次请求,web服务器接收内容->返回给用户;
模块模式
- apache+php运行时,默认使用模块模式,把它作为apache模块启动而启动,接收用户请求则通过调用mod_php模块进行处理;
php-cli模式
- php-cli模式属于命令行模式
- 没有超时时间
- 默认关闭buffer缓冲
- STDIN和STDOUT标准输入/输出/错误的使用
- echo var_dump属于直接到控制台
- 可使用的类函数不同
- php.ini配置不同
php-fpm FastCGI 进程管理器
-
支持平滑停止/启动的高级进程管理功能;
-
可以工作于不同的uid/gid/chroot环境下 ,监听不同的端口和使用不同的php.ini配置文件
-
发生意外的时候能够重新启动并缓存被破坏的opcode;
-
文件上传优化;
-
慢日志-记录脚本(不仅读取文件名,还记录php backtrace信息。可以使用ptrace或类似工具读取分析远程进程的运行数据
-
动态/静态子进程产生;
-
用户请求-生成n个fastcgi协议处理进程-监听一个端口等待任务-web服务器接收请求-请求转发给php-fpm-交给一个空闲进程-进程处理完成-php-fpm返回给web服务器-服务器接收内容-返回给用户