从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系统是采取多进程 的事情办法不同的是Windows系统是采取多线程的事情办法。如果在IIS下以CGI办法运行PHP会非常慢,这是由于CGI模式是建立在多进程的根本之上的,而非多线程。
一样平常我们会把PHP配置成以ISAPI的办法来运行,ISAPI是多线程的办法,这样就快多了。但存在一个问题,很多常用的PHP扩展因此 Linux/Unix的多进程思想来开拓的,这些扩展在ISAPI的办法运行时就会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方 式,但CGI模式对付每个HTTP要求都须要重新加载和卸载全体PHP环境,其花费是巨大的。
为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的办理方案。FastCGI可以让PHP的进程重
复利用而不是每一个新的要求就重开一个进程。同时FastCGI也可以许可几个进程同时实行。这样既办理
了CGI进程模式花费太大的问题,又利用上了CGI进程模式不存在线程安全问题的上风。
因此,如果是利用ISAPI的办法来运行PHP就必须用Thread Safe(线程安全)的版本;而用
FastCGI模式运行PHP的话就没有必要用线程安全检讨了,用None Thread Safe(NTS,非线程安全)
的版本能够更好的提高效率。
PHP官方http://php.net/上关于widows的版本有4个:VC9 x86 Non Thread Safe,VC9 x86 Thread Safe,VC6 x86 Non Thread Safe,VC6 x86 Thread Safe;那么有什么差异呢?
1.支持的做事器不同
VC9版本是针对IIS做事器的版本,没有对APACHE的支持,而VC6版本对IIS和apache都供应了支持
VC6 是什么?VC6 便是 legacy Visual Studio 6 compiler ,便是利用这个编译器编译的。VC9 是什么?VC9 便是 the Visual Studio 2008 compiler ,便是用微软的 VS 编辑器编译的。
那我们如何选择下载哪个版本的 PHP 呢?如果你是在 windows 下利用 Apache+PHP 的,请选择 VC6 版本;如果你是在 windows 下利用 IIS+PHP 的,请选择 VC9 版本;
2.运行办法的不同
PHP有2中运行办法:ISAPI和FastCGI。
ISAPI实行办法因此DLL动态库的形式利用,可以在被用户要求后实行,在处理完一个用户要求后不会立时消逝,以是须要进行线程安全检讨,这样来提高程序的实行效率,以是如果因此ISAPI来实行PHP,建议选择Thread Safe版本;
而FastCGI实行办法因此单一线程来实行操作,以是不须要进行线程的安全检讨,撤除线程安全检讨的防护反而可以提高实行效率,以是,如果因此FastCGI来实行PHP,建议选择Non Thread Safe版本。
对付apache做事器来说一样平常选择isapi办法,而对付nginx做事器则选择FastCGI办法。