php-fpm和php-cgi进程的问题

我在mac上安装了mamp pro集成环境之后
启动mamp pro环境之后,发现mac的监控工具中显示的php进程名字叫 php-cgi, 然后访问phpinfo,发现结果中也是cgi/fastcgi:
图片描述
图片描述

但是我同事自己分开装的各个环境,最终装完成之后,php进程名字叫做php-fpm, 然后访问phpinfo,发现结果中也是fpm/fastcgi:

图片描述

之后我了解了一下, 现在如果自己打环境的话, 貌似nginx安装好之后, 大家都会在php在编译的时候把php-fpm编译进来,但是为什么集成环境MAMP PRO没有php-fpm也能运行php呢? 这到底什么道理

阅读 5.4k
4 个回答

首先,无规矩不成方圆。可以把 cgi 当做一个工厂对员工(比如说 php-cgi)接活, 按时上班干活,发货(对应输入、环境变量设置、输出)等流程约定俗成的一个协议、制度

把一个 php 脚本当做流水线上需要打包的物件, php-cgi 就像是一线处理这个物件的 ‘学徒工人’ 。客户有物件来了(通常是一个 http 请求),接待员 web server 就通知 php-cgi, php-cgi 看到活来了才去找胶带、包装(加载php.ini,初始化语法词法环境,加载已配置的模块), php-cgi 打完包、收工(释放变量等)就通知接待员发货(response

fastcgi 是一个提升 cgi 效率的协议,一直随时待命,不像 cgi 看到活来才去准备工具,傻乎乎的 fork and execute...

php-fpm 是一个有着成熟经验(指实现 fastcgi), 管理着多个学徒工的 ‘老师傅’ (实现多进程了。有请求工作到来,就调度分发给空闲的学徒工。

那估计 你这个 mamp pro集成环境 没用PHP-FPM吧?

PHP-CGI和PHP-FPM都实现了cgi/fastcgi

新手上路,请多包涵

你好,我也遇到了这个问题,mamp上的nginx1.19.2和php7.4.12可以正常启动,Server API:CGI/FastCGI,nginx1.19.2和php5.6.40不能启动,报错*8 connect() to unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_php5.6.40.sock failed (61: Connection refused) while connecting to upstream, client: 127.0.0.1, server: www.qiye1.com, request: "GET /index.php?s=/Admin-Index-index&custom_sn=gzw& HTTP/1.1", upstream: "fastcgi://unix:/Applications/MAMP/Library/logs/fastcgi/nginxFastCGI_php5.6.40.sock:", host: "www.qiye1.com",查询百度是php-fpm没有启动,但是php7.4.12是可以的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题