Windows下的PHP版本分两种:线程安全版本与非线程安全版本
要论两者的区别,详细论说起来比较麻烦
1、windows + IS + FastCGl : 使用非线程安全版本。
以FastCGl方式安装PHP时,PHP拥有独立的进程,并且FastCGl是单一线程的,不存在多个线程之间可能引发的相互干扰(这种干扰通常都是由于全局变量和静态变量导致的)。由于省去了线程安全的检查,因此使用FastCGI方式比ISAPI方式的效率更高一些
2、windows +IIS +ISAPI : 使用线程安全版本
PHP以ISAPI方式安装时,PHP没有独立的进程,而是作为DLL被IS加载运行的,即是依附于Web服务器进程的。当Web服务器运行在多线程模式下(IS正是这种情况 ),PHP自然也就运行在多线程模式下。只要是在多线程模式下运行,就可能存在线程安全问题,因此应选择PHP的线程安全版本
3、windows + Apache + PHP( 模块] :使用线程安全版本
如果你要在Apache中以模块方式安装PHP,则你应该使用PHP的线程安全的版本。原因是当PHP作为Apache的模块安装时,PHP 没有独立的进程,而是作为模块以DLL的形式被加载到Apache中的,是随Apache的启动而启动的,而Windows下的Apache为多线程工作模式,因此PHP自然也就运行在多线程模式下。因此,这种情况下应使用PHP的线程安全版本。
4、windows + Apache + PHP (ISAPI ):使用线程安全版
本由于以ISAPI方式来安装PHP时,PHP也没有独立的进程,也是作为模块被加载到Apache中的,因此,同样也需要使用PHP的线程安全版本。
般不建议在Apache中以SAPI方式来安装PHP,原因是到目前为上,Apache通过mod isapi.so模块来实现的ISAPI功能并不完整,并未完整实现微软对ISAPI所制定的全部规范
5、windows + Apache + PHP ( FastCGl) :使用非线程安全版本
如果你要在Apache中以FastCGI方式使用PHP,则同在IIS中使用FastCGl的PHP的情况一样,你应该使用PHP的非线程安全的版本,原因是在Apache中以FastCGl方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,故应使用PHP的非线程安全版本以提高性能