在解析这个问题前,先要讲述一个概念,什么是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处理。

php和web服务器,php与web服务器关系相关推荐

  1. web服务器错误配置文件,web服务器http配置文件

    web服务器http配置文件 内容精选 换一换 通过调优Nginx的配置文件,可以有效的提高Nginx服务的性能.配置说明如表1所示.调优原则:以压满业务核为前提,用尽量少的中断核,配合配置网卡中断绑 ...

  2. Web 服务器 之 简易WWW服务器的架设

    作者:小P 来自:LinuxSir.Org 摘要:Linux为何如此的流行,其最大的特点莫过于功能强大,性能稳定的服务器应用了.像WWW,MAIL,FTP,DNS和SMB等;在这篇文章中,我们从Web ...

  3. [投稿]通过Web界面在多台服务器上批量创建文件

    最近在EDAS产品上发现了一个有意思的功能,能够在Web界面上向多台服务批量下发命令执行,觉得这个功能能够极大的提升效率,因此想分享给其他小伙伴. 这里我以"通过Web界面在多台服务器上批量 ...

  4. lvs服务器需要开启web服务么_如何检测 Web 服务请求丢失问题

    导读 『StabilityGuide』是阿里多位阿里技术工程师共同发起的稳定性领域的知识库开源项目,涵盖性能压测.故障演练.JVM.应用容器.服务框架.流量调度.监控.诊断等多个技术领域,以更结构化的 ...

  5. centos 7 文档服务器,centos 7 web服务器

    centos 7 web服务器 内容精选 换一换 OpenSSL版本需要升级至1.1.1a或者以上.CentOS系统自带的OpenSSL版本为1.0.2k-fips,本文以升级到1.1.1a版本为例. ...

  6. Eclipse利用Maven的插件部署web项目到远程tomcat服务器

    使用maven的自动部署功能可以很方便的将maven工程自动打包并且部署到远程tomcat服务器,省去一些繁琐的操作,节省大量时间. 我使用的tomcat版本是8.5,tomcat7和tomcat8都 ...

  7. Linux上部署web服务器并发布web项目

    近在学习如何在linux上搭建web服务器来发布web项目,由于本人是linux新手,所以中间入了不少坑,搞了好久才搞出点成果. 以下是具体的详细步骤以及我对此做的一些总结和个人的一些见解,希望对跟我 ...

  8. Web服务器和应用程序服务器有什么区别

    Web服务器和应用程序服务器有什么区别 [ 来源:javaworld.com | 作者:佚名 | 时间:2006-10-12 14:08:30 | 浏览:人次 ] 问:什么是应用程序服务器,什么是We ...

  9. 启动一个java项目http状态 500 - 内部服务器错误_Java web服务器假死分析

    问题现象: 服务端端口开着,客户端可以telnet 服务器上的端口,但访问服务时没有任何返回. 服务器环境 :Java 8 + linux CentOS release 6.5. 用apache ab ...

  10. 单网卡部署WEB+Mail+FTP+ISA服务器之四:局域网内部署FTP和winwebmail服务器

    一.目的:构建简单FTP和MAIL服务器为下一步发布到互连网做准备.另外如果你觉得Exchange很麻烦,就用winwebmail吧,绝对的简单方便,安全性也不错. 二.网络环境: 三.局域网发布FT ...

最新文章

  1. 万能头文件#include<bits/stdc++.h>更新GCC10.2.0版本
  2. AS-External-LSA
  3. IPv6的脚步声近了!
  4. asp备份恢复mssql数据库的代码
  5. mysql 异常处理实例
  6. JS中的HTML片段
  7. MySQL单行函数分类
  8. 字典树实现_学习NLP的第3天——字典树
  9. rpc结构错误_结构性错误
  10. [js高手之路] html5 canvas系列教程 - 线条样式(lineWidth,lineCap,lineJoin,setLineDash)
  11. 使用Event Message 对 Package 进行Troubleshoot
  12. Python笔记(6) 数字
  13. MySQL 查询缓存快速理解。。。(1分钟图解如何优化查询缓存)
  14. java跳跳球代码,README.md
  15. php中用户自定义排序
  16. STM32 USB接口 一键下载电路详解与过程分析
  17. 偏最小二乘法与最小二乘法的区别
  18. 论文《Fast spatial–temporal stereo matching for 3Dface reconstruction under speckle pattern projection》
  19. python所需各种库(.whl)文件网址,不用下载其它运行库,直接pip install .....whl
  20. 青云诀2显示登录服务器超时,青云诀2游戏突然显示数据包损坏怎么办 解决方案分享...

热门文章

  1. dotnet core开源博客系统XBlog介绍
  2. 今日头条Marketing API小工具(.Net Core版本)
  3. 开源分享 Unity3d客户端与C#分布式服务端游戏框架
  4. Jexus针对Asp.net core应用程序的六大不可替代的优势
  5. 采用MiniProfiler监控EF与.NET MVC项目
  6. 使用Filezilla 与 linux远程服务器传输文件时,设置默认打开编辑器
  7. qiaoye.php,全自动无限生成关键词页面(黑帽SEO优化终极方法)
  8. [转]让.NET应用秒变微服务
  9. 【经典回放】多种语言系列数据结构算法:数组
  10. ArcGIS实验教程——实验十四:空间数据库的建立