User-Profile-Image
hankin
  • 5
  • 日记
  • 新闻
  • 微博
  • 仓库
  • 音乐
  • 程序人生
    • python
    • php
    • mysql
    • linux
    • go
  • 关于我
    • 博主简介
  • 友情链接
    • 知向前端
Help?

Please contact us on our email for need any support

Support
    首页   ›   php   ›   正文
php

cgi、fastcgi、php-cgi、php-fpm剖析

2020-05-17 16:58:03
459  0 0

定义

cgi

通用网关接口,外部程序与web服务器之间的接口标准,是在cgi程序和web服务器之间传递信息的过程

每一次请求都会生成一个cgi进程,cgi程序执行完,进程退出

独立于服务器、独立编程语言

FastCgi

FastCgi 像是一个常驻型的Cgi,它可以一直执行这,只要激活后,不需要每次去fork一次,还支持分布式运算,即FastCgi程序可以在网站服务器以外的主机上执行并且接受来自其他网站服务器的请求

可以同时处理多个请求

长期占用内存

php-cgi

php官方自带的FastCGI 进程管理器

php.ini修改之后,必须kill掉php-cgi再启动php.ini 才生效。不可以平滑的重启

内存不能动态分配

php-fpm

非官方fastCgi进程管理器,后来php5.4开始,被官方收录了,编译php的时候只需要–enable-fpm 就可以开启php-fpm

可以平滑重启php

动态调度进程

原理

cgi

以apache为例,首先要配置好cgi访问目录,访问 http://127.0.0.1/cgi-bin/printenv.pl 。

apache收到用户请求,开始调用cgi接口,处理cgi程序(printenv.pl),处理完了之后返回 cgi程序处理后的结果。

说一下我走过的一个坑,为了验证cgi程序,我特意编译了apache2.4 ,然后配置httpd.conf 但是访问cgi程序还是报错。主要原因就是。cgi文件,没有加上调用哪个程序执行 。 这样的语句, “#!/bin/sh” ,加上之后就可以正常的返回了

fastCgi

本来我想用apache 实现 fastcgi 有两种方式,一种是mod_fcgid 模块(官方模块),还有一种是mod_fastcgi 模块(外部模块),两种方式我都试着安装了一下,但是都没有安装成功。都打不开链接了

我的理解是,web服务器启动,自动启动fastCgi模块 并且长期驻留在内存里, 用户访问 fastCgi程序,开启的fastCgi模块 ,直接处理请求,并返回结果.

php-cgi

启动php,指定启动的worker ,长期驻留在内存里 ,用户访问php文件, php-cgi 处理请求,返回结果

php-fpm

启动php,动态指定启动的worker ,长期驻留在内存里 ,根据来访压力动态增减worker的进程数量,用户访问php文件, php-fpm 处理请求,返回结果

关系

cgi是最初始的网关接口,随着互联网的发展,大量的请求,衍生而来很多的问题,fastCgi开始出现了,取代了cgi技术

php是动态脚本语言 , php5.3以前 用php-cgi 来实现 fastCgi web请求,php 5.4开始,php-fpm 取代了php-cgi ,主要原因是 不能平滑重启php ,内存不能进行动态分配

总结

上面所说都是我总结的,出于我的理解,大家如果有质疑欢迎和我进行沟通

如本文“对您有用”,欢迎随意打赏作者,让我们坚持创作!

0 打赏
评论 (0)

点击这里取消回复。

欢迎您 游客  

doralf
28文章 3评论 0点赞 10341浏览
搜一搜,你想干啥
近期文章
  • Mac 配置 Docker 镜像加速
  • 在多个数组里面找出某个字段的不同值
  • cgi、fastcgi、php-cgi、php-fpm剖析
  • php.ini常用配置
  • 计算机下载
标签
centos cron docker github go javascript linux MySQL nginx php thinkphp
我的微信
交换友情链接

通过上面的二维码加我微信
然后把你的链接发过来
我这边会手动给你添加
交个朋友,多个链接
人生挺美好的 哈哈

微信公众号
  • 0
  • 0
  • 2
  • 2
  • 3,514
  • 2,450
  • 0
  • 0
Copyright © 2022
主页
页面
  • 博主简介
博主
doralf 管理员
28 文章 3 评论 10341 浏览
测试
测试
赞赏作者

请通过微信、支付宝 APP 扫一扫

感谢您对作者的支持!

 支付宝 微信支付