请描述PHP与Nginx协同处理用户请求的具体流程是怎样的?
考察说明
考查对PHP与Nginx协作机制的理解,包括请求传递、FastCGI协议及PHP-FPM的角色。
回答思路
- 【回答框架 1】PHP与Nginx协作的核心是FastCGI协议,PHP-FPM作为FastCGI进程管理器独立运行。当Nginx收到用户请求时,若识别为PHP资源,Nginx将请求通过FastCGI接口转发给PHP-FPM。
- 【回答框架 2】PHP-FPM接收到请求后,由worker进程执行PHP脚本,处理后返回结果给Nginx,Nginx再将响应发送给客户端。整个过程中Nginx负责静态文件处理和请求分发,PHP-FPM负责动态脚本执行。
- 【回答框架 3】实际部署中,可通过配置nginx.conf中的location块匹配.php文件,设置fastcgi_pass指向PHP-FPM监听的地址(如127.0.0.1:9000),并传递SCRIPT_FILENAME等参数。
- 【回答框架 4】PHP-FPM支持进程池管理,可调整进程数量,Nginx与PHP-FPM间的通信可以通过TCP或Unix socket,Unix socket性能更优但需注意权限。
- 【关键点 1】Nginx通过FastCGI协议转发PHP请求给PHP-FPM。
- 【关键点 2】PHP-FPM作为独立进程管理器执行PHP脚本并返回结果。
- 【关键点 3】配置涉及fastcgi_pass和SCRIPT_FILENAME。
- 【易错点 1】混淆PHP-FPM与PHP解释器,PHP-FPM是进程管理器。
- 【易错点 2】忽略Unix socket权限配置可能导致通信失败。