首页 > php学习 > php中的php-fpm进程管理
2020
05-19

php中的php-fpm进程管理

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
最后编辑:
作者:qingheluo
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。