PHP-CGI php-fpm区别
我查了很多资料,我搞不懂它们两者之前本质区别在哪里,在我看来同样可以解析PHP。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我查了很多资料,我搞不懂它们两者之前本质区别在哪里,在我看来同样可以解析PHP。
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
一个是cgi 一个是fastcgi 这么说对么?
php-cgi是被调用的进程,php-fpm是配置和管理进程的
关注,学习。。。
cgi效率低,每次来了PHP请求,新建立一个PHP进程来解析,解析完毕进程销毁,再来请求再起进程。。。
fpm=fastcgi process manage,维持一定数量的进程数,供nginx调用,不用每次都新建进程,速度更快。原理上有点类似于数据库连接池吧。
CGI 是用来接收HTTP请求的一个程序,例如[127.0.0.1/index.php?c=article&id=11,这个请求通过apahce、nginx等等过来,然后http服务器发送给php-cgi(就是php用来接收http的程序),这个玩意儿每次新建一个进程的时候都要读取和加载php.ini的一堆参数,然后才能开始接收请求,比较慢。
FASTCGI的工作原理是首先启动一个master,这个master加载了所有的配置信息等等,master会新建很多个worker,然后每次有请求的时候master负责把请求分配给相应的worker,这样避免了重复加载和启动,就是一个提交cgi程序效能的东西,fastcgi这个东西只是一个协议(你可以理解为是一个没实现的想法),并不是一个程序。
PHP-FPM就是实现这个想法的程序,CGI很蠢,不会管理进程,而PHP-FPM会根据实际情况,创建worker或者关掉worker进程,保持一定量的worker,请求多了,worker就多了,请求少了,worker就会被关掉一部分,你可以理解为它是一个高效CGI的进程管理器。