模块、CGI、FastCGI三种方式介绍

以PHP脚本为例:

模块方式是指Web服务器通过libphp5.so模块调用PHP服务,模块将相关函数嵌入Web服务请求处理流程,不需要额外解释器进程。注意,libphp5.so是PHP提供的,不是apache自带的。

CGI模式是指Web服务器在本地启动一个解释器进程执行PHP脚本,解释完毕后关闭进程。这种方式只适用于本地,并且是串行执行,效率较低。

FastCGI模式是指由单独的进程管理器如PHP-FPM启动并管理多个解释器进程,Web服务器只需将脚本传给相应端口即可执行,解释完毕后解释器进程不关闭,等待下一个请求。这种方式既适用于本地,也适用于分布式架构,并且多个进程并行处理,效率较高。

简单总结:假设Web服务器是一家公司,模块方式是自己有多个部门,遇到问题能自己解决;CGI模式是自己部门不多,遇到事情就临时成立工作组,完成后就解散;FastCGI模式是自己专做擅长的事情,遇到其他问题选择外包给其他公司。你看,这和公司的演变很像吧!

我一直觉得不论是技术还是社会都有一个基本的思维范式:分层、分类、分工。

用Apache实现这三种方式

1.PHP模块

vim /etc/httpd/conf/httpd.conf  

DirectoryIndex index.php index.html index.html.var
LoadModule php5_module modules/libphp5.so
<IfModule mime_module>
AddType application/x-httpd-php .php
AddType applicaiton/x-httpd-php-source .phps /etc/init.d/httpd restart

2.CGI模式

vim /etc/httpd/conf/httpd.conf 

#LoadModule php5_module modules/libphp5.so
Action application/x-httpd-php /cgi-bin/php-cgi cp /usr/bin/php-cgi /var/www/cgi-bin/
/etc/init.d/httpd restart

3.FastCGI模式

待续

Web服务器处理动态程序三种方式及Apache配置的更多相关文章

  1. java Web jsp嵌入代码的三种方式

    1,表达式标签  <%= 2+3%> 唯一有显示功能的标签 作用: 计算表达式的返回值 将表达式的返回值显示到网页中. 注意: 表达式中不能有分号 2,普通脚本标签  <% %> ...

  2. java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...

  3. 【转载】java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种:一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,Ht ...

  4. HTTP:Java实现HTTP请求的三种方式

    目前JAVA实现HTTP请求的方法用的最多的有两种: 一种是通过HTTPClient这种第三方的开源框架去实现.HTTPClient对HTTP的封装性比较不错,通过它基本上能够满足我们大部分的需求,H ...

  5. 在Tomcat中部署web项目的三种方式

    搬瓦工搭建SS教程 SSR免费节点:http://www.xiaokeli.me 在这里介绍在Tomcat中部署web项目的三种方式: 1.部署解包的webapp目录 2.打包的war文件 3.Man ...

  6. #Eclipse web工程 部署 三种方式 3

    Eclipse web工程 部署 三种方式 3.热部署 在Eclipse中,实现 修改一个.java文件或者.jsp文件甚至是配置文件,不需要重启WEB服务器的前提下让修改生效,实现tomcat自动加 ...

  7. 于Unity3D动态创建对象和创建Prefab三种方式的原型对象

    于Unity3D动态创建对象和创建Prefab三种方式的原型对象 u3d在动态创建的对象,需要使用prefab 和创建时 MonoBehaviour.Instantiate( GameObject o ...

  8. 在Linux安装配置Tomcat 并部署web应用 ( 三种方式 )

    系统版本:centos6.5版本 java版本:1.7 一.准备工作 1.java -version 检查是否有java环境,没有则需要去安装并配置到环境变量中. 2.下载tomcat包,下载地址:h ...

  9. Eclipse web工程 部署 三种方式 1

    Eclipse web工程 部署 三种方式 1.run on 前提: 安装 好 eclipse.jdk.tomcat 然后 新建一个 web工程 注意此处Default output folder 最 ...

随机推荐

  1. Docker学习笔记五:Docker生成jenkins容器,支持Java Web项目持续集成、持续部署

    一.创建jenkins容器: 1.拉取jeknin镜像 sudo docker pull jenkins 2.创建一个jenkins目录 sudo mkdir /jenkins 3.在jenkins目 ...

  2. 代码收藏系列--php--加载sql文件并解析成数组

    php加载sql文件,解析成以分号分割的数组.(支持存储过程和函数提取,自动过滤注释) /** * 加载sql文件为分号分割的数组 * <br />支持存储过程和函数提取,自动过滤注释 * ...

  3. 【bzoj3567】江南乐

    Portal -->bzoj3567 Solution ​  今天开始啃博弈论了qwq ​  先mark一篇很棒的博客Portal -->博弈论学习资料 ​​  稍微总结一下两个自己容易混 ...

  4. python基础----继承与派生、组合、接口与归一化设计、抽象类、子类中调用父类方法

    一.什么是继承                                                                          继承是一种创建新的类的方式,在pyth ...

  5. eclipse快速复制一行代码(向下/向上)快捷键修改设置

    eclipse快速复制一行代码(向下/向上)快捷键修改设置 2015年10月05日 17:46:57 xiaoguanglgc 阅读数:20906 标签: eclipse快速复制一行快捷键冲突英特尔 ...

  6. Qt ------ 我定义的规则 之 对象命名规则

    类型 + 特性,比如  button_closeLigth 非公有的变量前面要加上小写m_ (指的修饰符为private时) 静态变量前面加上小写s_ 其它变量以小写字母开头 静态变量全大写 (sta ...

  7. Highcharts.js -纯javasctipt图表库初体验

    一.highcharts简介以及引入 highcharts作为免费提供给个人学习.个人网站和非商业用途使用的前端图表演示插件的确使用起来十分方便和轻便.在我最近完成一个需求的时候用到了它, 它的兼容性 ...

  8. count distinct

    SELECT COUNT(DISTINCT Customer) AS NumberOfCustomers FROM Orders

  9. [应用篇]第四篇 JSTL之C标签介绍

    JSTL 核心标签库标签共有13个,功能上分为4类: 1.表达式控制标签:out.set.remove.catch 2.流程控制标签:if.choose.when.otherwise 3.循环标签:f ...

  10. ios 字符串截取

    NSString *str = @"my name is jiemu"; 1.从第三个字符开始,截取长度为4的字符串 NSString *str2 = [str substring ...