美文网首页
cgi、fastcgi、php-cgi、php-fpm异同

cgi、fastcgi、php-cgi、php-fpm异同

作者: mafa1993 | 来源:发表于2020-04-24 00:22 被阅读0次

    1. cgi

        - 通用网关接口,就是外部应用程序(cgi程序)与web服务器之间的接口标准。

        - nginx是内容分发者,如果是请求index.php,根据配置文件内容得知不是静态文件,就会去找对应的cgi程序进行解析

        - cgi就是规定要传那些数据,以什么格式传递给后方进行处理的协议

        - cgi工作模式,一个请求发送过来,启动cgi解释器(创建进程)-> 逻辑处理 -> 退出 (fork and exec 模式) 每次都需要重新创建进程,加载配置,浪费系统资源

    2. fastcgi

        - 快速通用网关接口,常驻型的cgi,不用每次都fork进程,其会使cgi解解释器进程常驻内存,所以性能较高

        - master-worker模型,服务器启动时载入fastcgi进程管理器

        - fastcgi会进行自身初始化,初始化时会创建多个进程

        - 请求到达web服务器后,fastcgi进程管理器会选择并通过socket连接到一个cgi解释器

    3. php-cgi

        - php自带的cgi管理器

        - php-cgi的缺点,不能平滑重启,需要重启php-cgi才能使php.ini生效

    4. php-fpm

        - php-fpm是php的一种fastcgi的实现,管理php的fastcgi进程池

        - 能够调度php-cgi程序

        - 能够实现平滑重启

        - php-fpm创建一个master进程,然后创建进程池,监听socket,fork出多个子进程,子进程各自accept请求,php-fpm的子进程同时只能响应一个请求,处理完一个请求才可以accept下一个请求,多进程,同步阻塞模型

        - master和worker进程之间不直接进行通信,master通过共享内存获取worker进程信息,master进程发送信号通知worker进程

        - php-fpm可以同时监听多个端口,每个端口对应一个worker pool

        - worker是cgi程序,php-fpm是fastcgi协议的php是实现

    相关文章

      网友评论

          本文标题:cgi、fastcgi、php-cgi、php-fpm异同

          本文链接:https://www.haomeiwen.com/subject/vsptwhtx.html