windows下 php、apache 版本选择 解惑说明

每次安装php开发环境的时候老是得或多或少困惑一阵,今天来梳理一下apache,php之间的关系(根据http://www.ituring.com.cn/article/128439整理,添加。)php

1.apache和php都是由visual studio编译。apache

所以咱们常常会遇到选择VC6/VC9/VC11的困惑。PHP官方不建议在Windows下安装从apache.org网站下载的Apache二进制安装包。缘由就是这些安装包是基于陈旧的Visual Studio 6编译的,致使你不得没必要须使用一样陈旧的PHP版本(即VC6的PHP版本。也即便用Visual Studio 6编译的PHP版本)。PHP官方的建议是你在Windows下可使用IIS,或者使用来自Apache Lounge(www.apachelounge.com)的Apache版本。windows

2.windows下php选择线程安全的仍是非线程安全的。api

要弄清这个问题,首先要看选择的服务器,根据所选的服务器以及php工做方式,再决定php的选择。windows下咱们能够选择iis或apache。安全

1.采用iis时php有两种工做方式:服务器

2.1 isapi 则你应该使用PHP的线程安全版本(Thread Safe,TS)。缘由是PHP以ISAPI方式安装时,PHP没有独立的进程,而是做为DLL被IIS加载运行的,便是依附于Web服务器进程的。当Web服务器运行在多线程模式下(IIS正是这种状况),PHP天然也就运行在多线程模式下。只要是在多线程模式下运行,就可能存在线程安全问题,所以应选择PHP的线程安全版本。多线程

2.2 fastcgi 则应该使用PHP的非线程安全的版本(Non-Thread Safe,NTS)。缘由是以FastCGI方式安装PHP时,PHP拥有独立的进程,而且FastCGI是单一线程的,不存在多个线程之间可能引起的相互干扰(这种干扰一般都是因为全局变量和静态变量致使的)。因为省去了线程安全的检查,所以使用FastCGI方式比ISAPI方式的效率更高一些。性能

2.采用apache时有三中工做方式:网站

在这里还有必要说明一下,尽管Apache自己是线程安全的,同时你也选择了PHP的线程安全版本,但因为一些Apache和PHP下的第三方扩展最初是基于Unix的多进程思想开发出来的,在设计开发时没有考虑线程安全的问题,所以,不排除在这种状况下仍然存在IIS被某些第三方扩展搞崩溃的可能。线程

2.1 模块 若是你要在Apache中以模块方式安装PHP,则你应该使用PHP的线程安全的版本。缘由是当PHP做为Apache的模块安装时,PHP没有独立的进程,而是做为模块以DLL的形式被加载到Apache中的,是随Apache的启动而启动的,而Windows下的Apache为多线程工做模式,所以PHP天然也就运行在多线程模式下。

2.2 ISAPI 一般认为ISAPI是配合IIS使用的,由于ISAPI最初就是微软为IIS开发的。但Apache如今也能够经过加载mod_isapi.so模块来实现ISAPI的功能,以容许PHP以ISAPI的方式安装。.so文件是Apache自1.3版本后制定的用于Windows下的模块命名规则,对于Windows下的Apache而言,.so与.dll文件同样,都是动态连接库文件。

当要以ISAPI方式来安装PHP时,一般是加载一个名如phpXisapi.dll的DLL文件,其中的X为阿拉伯数字四、5等等这样子。

但通常不建议在Apache中以ISAPI方式来安装PHP,缘由是到目前为止,Apache经过mod_isapi.so模块来实现的ISAPI功能并不完整,并未完整实现微软对ISAPI所制定的所有规范。一样的,因为以ISAPI方式来安装PHP时,PHP也没有独立的进程,也是做为模块被加载到Apache中的,所以,一样也须要使用PHP的线程安全版本。

2.3 FastCGI 若是你要在Apache中以FastCGI方式使用PHP,则同在IIS中使用FastCGI的PHP的状况同样,你应该使用PHP的非线程安全的版本。缘由是在Apache中以FastCGI方式安装PHP时,PHP拥有独立的进程,而且FastCGI是单一线程的,故应使用PHP的非线程安全版本以提升性能。

相关文章
相关标签/搜索