流程图(文字版)

浏览器请求 index.php
       │
       ▼
 Web服务器(Apache/Nginx)
       │ 判断请求类型
       ├─ 静态文件 → 直接返回
       └─ PHP 文件 → 通过 FastCGI 发送请求
       ▼
  PHP-FPM 进程池
       │ 空闲进程接收请求
       ▼
   PHP 解析器执行脚本
       │
       ├─ 解析 PHP 代码
       ├─ 执行业务逻辑
       └─ 输出 HTML/JSON
       ▼
  返回给 Web 服务器
       ▼
  Web服务器发送响应
       ▼
 浏览器显示页面

流程解释

1、请求到达服务器

浏览器访问 PHP 页面,例如:http://example.com/index.php。

请求首先到达 Web 服务器 Apache 或 Nginx(负责接收 HTTP 请求)

2、判断请求类型(静态文件 vs PHP 脚本)

  • 如果是静态文件(HTML、JS、CSS、图片) → 直接返回给客户端
  • 如果是 PHP 文件 → 转发给 PHP 解析器

配置方式:

Web服务器 PHP 解析方式
Apache + mod_php Apache 内嵌 PHP 模块直接执行
Apache/Nginx + PHP-FPM Web服务器通过 FastCGI 协议把请求发给 PHP-FPM

3、请求传递给 PHP-FPM(如果使用 PHP-FPM)

3.1. Web服务器生成 FastCGI 请求

包含信息:

  • 文件路径(SCRIPT_FILENAME)
  • 请求方法(GET/POST)
  • Query 参数(QUERY_STRING)
  • HTTP 头信息

3.2. 请求发送到 PHP-FPM 进程池

PHP-FPM 有多个进程等待处理请求

空闲进程拿到请求,开始执行 PHP 文件

4、PHP 文件解析执行

PHP-FPM 调用 PHP 解析器(Zend Engine) 执行脚本:

  1. Lexer/Parser → 把 PHP 代码解析成抽象语法树(AST)
  2. Opcode 编译 → 编译成 Zend VM 的字节码
  3. 执行 → 执行字节码,生成输出(HTML、JSON 等)
  4. 处理输出缓冲 → PHP 可以使用 ob_start() 缓存输出,最后统一发送

同时:

  • PHP 可以访问数据库(MySQL/PostgreSQL)、缓存(Redis)、文件等
  • 可以执行业务逻辑、模板渲染(Smarty、Twig 等)

5、返回响应

  1. PHP 执行完毕 → 输出内容(HTML/JSON/图片等)
  2. PHP-FPM 把输出通过 FastCGI 协议返回给 Web 服务器
  3. Web服务器(Apache/Nginx)接收到内容 → 添加 HTTP 响应头 → 返回给客户端浏览器

浏览器收到响应 → 渲染显示页面

作者 admin

百度广告效果展示