浏览器打开index.php发生了发什么?

来源:互联网 发布:神经网络有哪些算法 编辑:程序博客网 时间:2024/04/30 13:04

记得毕业那年,面试官问我,用户打开浏览器发生了什么,当时回答的糊里糊涂,然后糊里糊涂地被录用了。

今天,我和大家分享这道面试题的。

无图无真相,上图:

nginx-php

下面是php以cgi运行图:

php以fast-cgi运行:
这里写图片描述

从php-cgi和php-fpm对比可以看到,fastcgicgi和cgi模型相比,省去了部分的过程,从而速度更快,更节省内存。

早些的时候,web服务器将收到的请求交给php接口,这个借口叫做php-cgi。

cgi 是一种标准,perl、php、python等多种语言都使用cgi标准,这个标准的工作方式使得这些语言可以被其他的软件调用,但是cgi方式慢,因此有了fastcgi标准的调用接口,比如php的php-fpm实现。

php的cgi可执行文件是php/bin/php-cgi,php-fpm实现是php/sbin/php-fpm文件。

但是,不论是php-cgi还是php-fpm,最终都是要将php代码交给php解析器的,只是php-fpm使用fastcgi标准,php-cgi使用cgi标准,更为先进一些而已。

1、查看PHP -fpm

root      3011  0.0  0.4 196692  4720 ?        Ss   Jul11   0:00 php-fpm: master process (/phpstudy/server/php/etc/php-fpm.conf)www       3013  0.0  0.7 199284  7720 ?        S    Jul11   0:00 php-fpm: pool wwwwww       3014  0.0  0.7 199284  7744 ?        S    Jul11   0:00 php-fpm: pool www

从上面我们可以清晰地看到一个php-fpm 主进程,多个php-fpm子进程。

2、查看Nginx

root      3015  0.0  0.1  47536  1196 ?        Ss   Jul11   0:00 nginx: master process /phpstudy/server/nginx/sbin/nginxwww       3017  0.0  0.1  50044  1968 ?        S    Jul11   0:00 nginx: worker processwww       3018  0.0  0.1  50044  1968 ?        S    Jul11   0:00 nginx: worker processwww       3019  0.0  0.1  50044  1968 ?        S    Jul11   0:00 nginx: worker processwww       3020  0.0  0.1  50044  1968 ?        S    Jul11   0:00 nginx: worker process

nginx的做法也是这样,一个master进程,多个work进程。

参考文献:
搞不清FastCgi与PHP-fpm之间是个什么样的关系
Nginx中FastCGI配置优化

原创粉丝点击