博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
PHP运行模式
阅读量:6826 次
发布时间:2019-06-26

本文共 1873 字,大约阅读时间需要 6 分钟。

hot3.png

php分为五大运行模式

  • cgi(通用网关接口 Common Gateway Interface)
  • fast-cgi(cgi升级版本)
  • cli(命令行模式 Command Line Interface)
  • isapi(Internet Server Application Program Interface,是微软提供的一套面向Internet服务的API接口)
  • apache2handler(将php作为apache的模块)
  • 其他(continuity,embed,litespeed,milter等)

本地查看运行模式的方法

phpinfo() php -r "echo php_sapi_name()"

选择运行模式前提

  • 了解运行模式优缺点和应用场景
  • 根据业务本身结合上一条

CLI模式

  • Command Line Interface的简称,支持windows和Linux平台
  • 直接在命令行运行,不需要http server,例如php test.php
  • 应用场景
    • 定时任务
    • 开发桌面应用使用PHP-CLI和GTK包

CGI模式

  • Common Gateway Interface的简称,连接网页和web服务器执行程序,把http服务器接受指令传给执行程序,把执行程序的结果返回给http服务器,支持跨平台
  • 执行过程
    • http服务器接收到用户请求,如index.php,会通过它配置的cgi服务执行
    • 生成一个php-cgi进程,并执行php程序
    • 执行结果返回给http服务器
  • 应用场景
    • 提供http服务
  • 优缺点
    • 跨平台,几乎能在任何操作系统实现
    • web和server是独立的,结构清晰,可控性强
    • 性能比较差,每一个请求fork一个进程,消耗资源比较多(fork-and-execute模式)
    • 逐渐少见

FastCGI模式

  • 快速通用网关接口(Fast Common Gateway Interface)是CGI的增强版本,是一种让交互程序和web服务器通信的协议,致力于减少web服务器和CGI程序之间互动开销,使服务器可以同时处理更多的网页请求
  • 执行过程
    • web服务器启动时载入Fast CGI进程管理器(php-fpm)
    • FastCGI进程管理器会启动多个CGI进程等待web服务器的连接
    • 当客户端请求到达web服务器时,FastCGI进程管理器选择并连接到一个CGI解释器。web服务器把环境变量和标准输入发送到FastCGI子进程php-cgi
    • FastCGI子进程完成处理后将标准输出和错误信息从同一连接返回web服务器。当FastCGI子进程关闭连接时,请求报告处理完成。FastCGI子进程接着等待并处理来自FastCGI进程管理器的下一个连接。在CGI模式中,php-cgi在此便退出了
  • 应用场景
    • 提供http服务
  • 优缺点
    • 跨平台,几乎能在任何操作系统实现
    • web和server是独立的,结构清晰,可控性强
    • 支持大并发
    • 多进程,消耗较多内存

模块模式

  • 模块模式指把PHP作为web服务器的一个模块运行
  • IIS的ISAPI和Apache的apache2handler

apache2handler

  • apache监听一个用户请求index.php
  • apache根据conf文件配置的LoadModule php_module modules/mod_php5.so(windows下面是php5apache2_2.dll)调用PHP
  • 在mod_php5.so注册一个php的钩子php_ap2_register_hook
  • php_ap2_register_hook钩子函数中包括4个挂钩以及对应的函数ap_hook_pre_config,ap_hook_post_config,ap_hook_handler,ap_hook_child_init。其中pre_config,post_config,child_init是启动挂钩,在服务器启动时调用。handler时请求挂钩,在服务器处理请求时调用。其中post_config挂钩中启动php。
  • php执行完成后数据通过.so或dll返回给apache
  • apache将数据返回到客户端
  • 应用场景
    • 提供http服务
  • 优缺点
    • 安装配置方便,不需要安装代码解析程序
    • 支持多线程,占用资源少
    • 支持大并发

欢迎扫描下方二维码,持续关注:

互联网工程师(id:phpstcn),我们一起学习,一起进步

转载于:https://my.oschina.net/xushuhui/blog/3023650

你可能感兴趣的文章
平方十位数——第八届蓝桥杯JavaB组(国赛)第一题
查看>>
畅通工程——浙大计算机研究生复试上机考试-2005年
查看>>
关于Class File Editor Source not found
查看>>
模拟EventCenter,flash自带的事件机制的一个解耦框架,callback回调方式用于模块之间的通信...
查看>>
bootstrap modal模态框的运用
查看>>
vue比较完整的方法介绍 和获取事件对象
查看>>
java例程练习(转换流)
查看>>
bzoj 1452 二维树状数组
查看>>
ReactiveCocoa 设置绑定注意事项
查看>>
基于VC的DLL编程实现
查看>>
tensor与数组转化
查看>>
Linux下KickStart+PXE无人值守装机服务器的配置
查看>>
往FBX写数据
查看>>
poj2407(欧拉函数模板题)
查看>>
windows 卸载服务
查看>>
CoreAnimation笔记
查看>>
51Nod-1179 最大的最大公约数【暴力】
查看>>
POJ2100 Graveyard Design【尺取法】
查看>>
RSA的JavaScript程序
查看>>
OC中的集合详解
查看>>