大白话之apache与php沟通的三种方式

其实对于这一块的知识来说,很多初级工程师都会对这一块的知识比较的迷茫,因为这些同学做的工作一般来说自己的职责或者说项目都涉及不到太多架构的东西,但是学一个东西我觉得是要做到知其然而又所以然,才能不断拓展自己在这一领域的深度与广度,今天来做一个系统的说明。

  php与apache的主要沟通方式就分为了如下的三种方式

  •       cgi模式
  •       模块化方式
  •       fastcgi模式

cgi模式

cgi定义与说明:

我们先来通俗的解释一下什么是cgi,首先cgi是一种规范,汉化的解释为通用的网关接口,其实就是web服务器与php之间的一个翻译机,当web服务器接收到一个请求过来的时候,如果你是用的这种方式,因为浏览器是只能识别html或者其他静态信息的,所以cgi就会给你做出php代码的转换,那么这个程序位于哪里呢?

 

以phpstudy为例 ,位于php的bin目录会看到这个可执行程序。

标题

大白话之apache与php沟通的三种方式_第1张图片

那具体的在apache里应该怎么来配置呢?

# 对 PHP 5 用这行

  Action application/x-httpd-php “/php/php-cgi.exe”

 

模块化方式

 

模块化方式通俗解释:

在模块化(DLL)中,PHP是与Web服务器一起启动并运行的,再通俗点说两者是同一个进程的方式在运行,那么具体怎么配置呢?

 # 对 PHP 5 用这两行:

  LoadModule php5_module “c:/php/php5apache2.dll”

  AddType application/x-httpd-php .php

  # 配置 php.ini 的路径

  PHPIniDir “C:/php”

 

fastcgi

通俗解释:

说白点fastcgi也是一种协议,它是一个cgi的管理者,那么它的具体实现到php中就是php的php-fpm模块,但是在apache中是用的专门的fastcgi模块,需要下载.so文件,php-fpm在php5.3以后不再作为第三方的模块而是集成到了php中,它会提前的开启多个cgi程序,管理这些进程,并提供方式合理有效的调度,保证了并发性,那么具体怎么配置呢?

http://www.tech1024.com/original/2986.html

哈哈,我在这里贴出了一个链接,是因为其实在真正的工作中,你并不会真正的使用apache+fastcgi的形式,一般使用fastcgi最好的架构方式还是采用nginx+phpfpm的形式。

 

 

以上就是apache与php沟通的具体的三种方式,主流的大型公司基本都采用了nginx+phpfpm的做法,后续的文章会贴出具体的做法,包括nginx+phpfpm的详细做法。

 

 

 

 

你可能感兴趣的:(架构相关)