php与web服务器关系

在解析这个问题前,先要讲述一个概念,什么是cgi程序?

1.什么是cgi程序,cgi与fastcgi的区别

CGI的中文名称是通用网关接口,是外部应用程序与web服务器之间的接口标准。CGI规范允许web服务器执行外部程序,并将它们的输出发送给web浏览器。而fastcgi则是一个常驻型的cgi,它可以一直执行着,不需求每次请求都必须fork进程来处理,此外,它还支持分布式运算,接受来自其他服务器的请求。

以下表格总结出它们的异同点:

  web服务器 处理进程
CGI fork一个新的进程处理 读取参数,处理数据,结束进程
FASTCGI 用tcp或者管道的方式与进程建立连接处理 处理数据后,进入循环,等待新请求

fastcgi不用fork新的进程处理请求,性能上比cgi程序要优。

2.PHP与web服务器通讯方式

1)php-fpm模式

php-fpm是一个php fastcgi管理器,可以视为php-cgi程序的守护进程。该模式下,php-fpm进程负责接收web服务器请求,分发给它的子进程——php-cgi来处理数据。这种模式一般搭配Nginx使用,其配置如下:

location ~ .*\.(php|php5)?$
        {
                try_files $uri =404;
                fastcgi_pass  127.0.0.1:9000;
                fastcgi_index index.php;
                include /etc/nginx/fastcgi.conf;
        }

php-fpm已经纳入php内核,在编译时通过--enable-fpm来启用改功能。

2)mod_php模式

该模式下,一般是作为apache的一个模块启动的,apache在启动时,会读取php.ini文件并加载扩展模块,除非apache重启,php模块不会被重新加载。在该模式下,apache使用prefork模式(非线程型,预派生web服务器),或者worker模式处理(混合多线程多进程,由于使用线程处理请求,系统开销小于prefork模式,但是它既有多进程,因此也能保证prefork模式的稳定性)。由于不需要额外的进程通讯和应用解析,该模式性能要比fastcgi好得多。

以下,也作了一个表格,来对比fastcgi和mod_php

  fastcgi mod_php
性能 -- 较好
易用性 跟web服务器无关,便于分布式处理,同时支持平滑重启 随apache启动,使用过程中无法重启
内存占用 内存占用较高 内存占用率较低,但每个请求都需求调用该模块,包括静态请求

3.PHP推荐服务器配置方式

综合以上的对比,可以利用每个模式的特性,一般常用的是nginx处理静态文件,php请求则是通过转发,让apache处理。

时间: 2024-10-12 12:27:40

php与web服务器关系的相关文章

Servlet和web服务器关系

前面的博客我详细的罗列了下Servlet的常用的类和接口,然后在前面的前面我类似tomcat模拟了一套web服务器,这里来做一个统一的整理,这样子可以更好的把握Servlet,也可以更好的了解下web服务器原理. 第一点: Servlet是一套规范,也就是说其中的一部分的类抽象成了接口,实际过程中Servlet运行在web服务器中,具体的实现要有web服务器来实现,这个和JDBC的驱动一个道理. 在Servlet中,Servlet是一个接口,在Servlet中的init方法用来初始化这个Serv

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么?

web容器 web服务器 servlet/jsp容器 之间的区别和关系是什么? 这是我在网上找的一些资料:1. Web浏览器除了可以在本地硬盘上打开网页文档外,还可以使用http网络协议从网络上的Web服务器(也叫www服务器)上获取网页文档的内容. 2. Web浏览器与Web服务器分别代表着TCP网络程序的客户机和服务器. 3. 无论网站规模的大小,最起码的工作就是要在用做Web服务器的计算机上安装某种Web服务器软件.只要在一台计算机上安装了Web服务器软件,从功能上讲,这台计算机就可以成为

web服务器和后端语言的关系

1.web服务nginx和php的相互关系  : https://www.cnblogs.com/luckylihuizhou/p/6387171.html 个人理解:web服务器本身没有处理后端语言的功能,只是对前端请求做出基本响应.但是web服务器可以和解析后端语言的程序进行交互,这样web服务器就可以执行相应的后端语言(即后端程序). 如:nginx服务器(一个web服务器),中配置了php程序(执行php语言的程序,而不是php语言).则nginx服务器就可以执行php语言了. 2.ph

超高性能Web服务器 hetao 更新至 v0.7.0

超高性能Web服务器 hetao 更新至 v0.7.0了(比Nginx快3倍).更新内容如下: 0.7.0        2016-09-10    calvin* 支持启动后切换到其它用户身份* 修正了fasterhttp的一个致命问题* 修改了makefile以及相关文件以支持直接编译安装到系统目录* 新增配置文件检查工具hetaocheck————————更新历史————————0.6.0        2016-09-07    calvin* 在流类型配置mimetype中增加是否压缩

(16/06/09) 跟兄弟连学PHP 第一章总结:HTTP协议与WEB的关系。

前言-PREFACE  让学习成为一种习惯. PHP是一种开源免费的开发语言,具有程序开发速度快,运行快,技术本身学习快等快捷性的特点,无疑是当前WEB开发中最佳的编程语言. 第一章:LAMP网站构建 1.HTTP协议与WEB的关系 1)HTTP是超文本传输协议.协议是指双方遵循的规范.HTTP协议就是浏览器和服务器的进行'沟通'的一种规范.一次HTTP操作成为一个事务,客户机和服务器通过请求和响应完成一次会话,工作过程分为5步 (1)客户端连接到WEB服务器     一个HTTP客户端(浏览器

Web服务器(Apache)与Servlet容器(Tomcat)

之前一直比较迷惑Apache与Tomcat的关系,通过查询资料,有所了解,现记录于此. Apache与Tomcat 两者定位:Apache是HTTP Web服务器,Tomcat是Web容器. 有一个非常形象的比喻:Apache是一辆车,可以装载静态的物件(HTML静态网页等):但不能装动态的水(JSP.CGI等),要装水就需要桶(容器),当然桶也可以不放在车上而单独存放,则该容器即为Tomcat. 两者的主要区别: Apache是世界上最流行的Web服务器(其次是微软的IIS),可以处理浏览器的

apache web服务器与防盗链的设置

一.安装apache2.4.23 新版本的httpd-2.4新增以下特性: 新增模块: mod_proxy_fcgi(可提供fcgi代理) mod_ratelimit(限制用户带宽) mod_request(请求模块,对请求做过滤) mod_remoteip(匹配客户端的IP地址) 对于基于IP的访问控制做了修改,不再支持allow,deny,order机制,而是统一使用require进行 还新增以下几条新特性: 1.MPM支持在运行时装载;不过要开启这种特性,在编译安装要启用这三种功能: --

WEB服务器4--IIS中网站、Web应用程序和虚拟目录

网站.Web应用程序和虚拟目录 在IIS中可以创建网站.Web 应用程序和虚拟目录,以便与计算机网络上的用户共享信息. “网站”.“Web 应用程序”和“虚拟目录”这三个概念的关系如图 8?1所示. 一个“网站(Web Site)”包含一个或多个“ Web 应用程序(Web Application)” 一个Web 应用程序包含一个或多个“虚拟目录(Virtual Directory)” 虚拟目录则映射到 Web 服务器或远程计算机上的物理目录. 图中可以清楚地看到此Web服务器上有两个“网站”:

用C写一个web服务器(四) CGI协议

* { margin: 0; padding: 0 } body { font: 13.34px helvetica, arial, freesans, clean, sans-serif; color: black; line-height: 1.4em; background-color: #F8F8F8; padding: 0.7em } p { margin: 1em 0; line-height: 1.5em } table { font-size: inherit; font: 10