一、用户对动态PHP网页访问过程
step1:用户将http请求发送给nginx服务器
step2:nginx会根据用户访问的URI和后缀对请求进行判断
step3:通过第二步可以看出,用户请求的是动态内容,nginx会将请求交给fastcgi客户端,通过fastcgi_pass将用户的请求发送给php-fpm
如果用户访问的是静态资源呢,那就简单了,nginx直接将用户请求的静态资源返回给用户。
step4:wrapper收到php-fpm转过来的请求后,wrapper会生成一个新的线程调用php动态程序解析服务器
step5:php会将查询到的结果返回给nginx
step6:nginx构造一个响应报文将结果返回给用户
cgi协议
cgi 通讯协议
fastcgi协议
fastcgi协议是对cgi协议效率补充提升,主要是针对每次请求过来时都需要启动一个cgi解释器进程的优化,不再需要cgi解释器进程每次收到webserver请求后都需要重新加载php.ini文件和初始化执行环境
php-fpm进程管理器
php-fpm是对fastcgi协议的实现,是进程管理器,启动时包括master和worker进程两部分,master进程负责管理worker进程,worker进程一般具有多个,用来监听端口,接收来自webserver请求,且每个worker进程都有一个cgi进程解释器,用来执行php代码
tcp有哪五层协议?
应用层、传输层、网络层、数据链路层、物理层
谈谈tcp三次握手?
1. 客户端向服务端发送一个连接请求报文段,其中SYN设置为1,并随即选择一个起始序号seq=x
2. 服务端收到请求报文段后,向客户端发送一个确认报文段,其中SYN和ACK设置为1,确认号字段为x+1,并生成一个起始序号seq=y
3. 当客户端收到确认报文段后,还要再向服务端一个确认报文段,其中ACK设置为1,确认号字段为y+1,序号字段为x+1
注:SYN为同步序号,ACK为确认序号标志
nginx接到请求,根据监听端口找到要访问的php文件,并通过socket与其中一个常驻内存fast-cgi程序建立连接,并将接收到的数据传给fast-cgi,php-fpm管理fast-cgi进程,挂了后就再启动起来,fast-cgi执行php程序,完成数据的获取后再通过该连接返回给nginx,返回到用户client。
cookie和session有什么区别?
1. cookie存储在浏览器上,session存储在服务器上
2. 别人可以分析本地的cookie从而进行cookie欺骗,考虑安全性应用session
3. 单个cookie的存储限制是4k,而浏览器对session没有限制
Atas ialah kandungan terperinci Nginx+Php-fpm运行原理详解. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!