php中的php-fpm进程管理
qingheluo2020-05-19清河洛1021
web服务器本身不能处理php,当接收到请求后,通过匹配后缀知道该请求是个动态的php请求,会把这个请求转给指定的php解释器处理,并把结果返回给客户端。在php-cgi的年代,总是每一个请求过来后,都要创建一个进程,读取配置,初始化环境,返回数据,退出进程。php-fpm启动后会创建一个主进程(master)并且监听指定端口,master进程会根据配置要求去创建若干子进程(worker),用于处理实际的业务当一个请求来的时候,通过master传递给worker,这样只需要主进程(master)读取一次配置并初始化执行环境(先读php.ini,然后读取conf配置)master进程的主要...
web服务器本身不能处理php,当接收到请求后,通过匹配后缀知道该请求是个动态的php请求,会把这个请求转给指定的php解释器处理,并把结果返回给客户端。
在php-cgi的年代,总是每一个请求过来后,都要创建一个进程,读取配置,初始化环境,返回数据,退出进程。
php-fpm启动后会创建一个主进程(master)并且监听指定端口,master进程会根据配置要求去创建若干子进程(worker),用于处理实际的业务
当一个请求来的时候,通过master传递给worker,这样只需要主进程(master)读取一次配置并初始化执行环境(先读php.ini,然后读取conf配置)
master进程的主要作用就是管理worker进程,负责fork或者kill掉子进程。在启动时根据配置文件会预先启动一定数量的worker。当请求比较多worker处理不过来时,master会fork新的worker进程处理。如果空闲的进程较多时,就会kill掉一些worker进程,避免占用浪费系统资源。
自从php5.3.3以后php-fpm就已经集成在php内核中了,编译安装时添加--enable-fpm参数编译php-fpm
winwows中的php-fpm:
php-fpm只有在类Linux系统中才有,在windows系统中只有php-cgi,可以通过一个开源软件php-cgi-spawner(项目地址:点击查看)模拟php-fpm的工作流程,该软件使用参数:
path/php-cgi-spawner.exe path/php-cgi.exe 9000 4[+16]
path/php-cgi.exe表示指定要worker的php-cgi程序
9000表示master监听的端口号
4表示永久运行4个worker(空闲时不会被kill掉,该值最大为64,可以为0,但建议至少为1)
16表示当请求比较多处理不过来时最多可以自动启动16个worker,不提供表示不启动额外的worker
可以指定配置文件:
"path/php-cgi-spawner.exe" "path/php-cgi.exe -c path/php.ini" 9001 4