php运行模式

cgi协议模式 通用网关接口
  • web服务器接收请求->fork子进程调用程序/执行程序->程序返回内容->程序调用结束->web服务器接收内容,返回给用户,由于每次请求,都得fork创建进程调用一次程序,然后销毁进程,性能较低;
fastcgi协议模式 通用网关接口
  • fastcgi是cli模式的升级版,是一个常驻型的cgi开启后,就一直处理请求,不在需要结束进程,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服务器-服务器接收内容-返回给用户

posted @ 2021-04-03 10:41  惊风破浪的博客  阅读(58)  评论(1编辑  收藏  举报