关于PHP
PHP概述
PHP即Hypertext Preprocessor,超文本预处理器
PHP是在服务器端执行的脚本语言,主要用于WEB开发领域。
与apache、mysql的关系
apache是服务器基础、php是脚本解释,如果不用php那么apache只能实现静态网页的访问,由php代码调用mysql接口,读写数据。
通过配置apache,使php成为apache的一个子模块,进而apache能够识别php代码。
WEB请求过程
图解
1.浏览器与nginx
浏览器与nginx通过http协议交互
2.nginx与PHP-FPM
nginx与php-fpm之间用过FastCgi协议进行通信,而这种通信是基于Unix domain socket或TCPconnection提供的服务之上的。
nginx向php-fpm发送环境变量和HTTP数据
关于php-fpm
实现了FastCgi协议,集成了PHP解析器
PHP-FPM由一个主进程和多个子进程组成,主进程负责与web服务器(nginx)通信,接受HTTP请求,然后分配给子进程处理。
子进程主要执行PHP语言,处理完毕后返回给WEB服务器(nginx)。
具体操作:php.ini是php-fpm的配置文件。
关于SAPI Server Application Programming Interface 服务端应用程序编程接口
SAPI是应用层(apache、nginx等)和PHP交互数据的入口
1)apache2handler和apache2filter,这是提供给apache mod_php的sapi;
2)cgi,webserver去fork出cgi进程使用的sapi;
3)fastcgi ,webserver采用网络通信或者网络IPC和php交换数据的sapi;
4)cli,命令行方式运行php脚本的sapi。