沙漠版——很干、很枯燥
一、PHP请求的流程
- 用户通过浏览器发出HTTP请求,例如输入一个URL或者点击一个链接。
- 用户的请求首先到达Web服务器(如Apache、Nginx)。Web服务器负责处理接收到的HTTP请求。对于PHP文件,Web服务器通过配置的接口(如CGI、FastCGI、PHP-FPM)将请求交给PHP处理器。
- PHP处理器初始化执行环境,包括加载配置文件(如
php.ini
),初始化扩展和环境变量。 - PHP处理器读取被请求的PHP文件的内容。
- PHP引擎将文件内容转换成词法单元(tokens)。词法单元被组织成语法树(AST)。语法树被编译成中间代码(OPCodes)。
- PHP引擎的虚拟机(Zend引擎)逐条解释并执行这些中间代码(OPCodes)。
- PHP代码执行完毕后,生成响应内容(如HTML、JSON等)并发送给Web服务器。响应内容包括HTTP状态码、响应头和响应体。
- Web服务器接收到PHP处理器返回的响应内容后,将其打包成HTTP响应,发送回用户的浏览器。
[用户浏览器] -> HTTP请求 -> [Web服务器]
|
v
根据配置决定处理方式
|
v
将请求传递给PHP处理器
|
v
初始化PHP执行环境
|
v
读取并解析PHP文件
|
v
解析、编译成OPCodes并执行
|
v
生成响应内容和响应头
|
v
将响应传回Web服务器
|
v
Web服务器发送HTTP响应
|
v
用户浏览器接收并处理响应
二、Nginx如何处理PHP请求
与上面的问题类似。
Nginx是高性能的HTTP服务器,但并不能直接