Windows版本的php从5.2.1开始有了Thread safe 和 None Thread Safe 之分,这两者不同之处如下:
之前的PHP windows版本都是线程安全的,由于Linux系统是多进程工作方式,Windows系统是多线程工作方式:如果在IIS下以CGI方式允许PHP就会非常慢,这是由于CGI模式是建立在多进程基础上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来允许,ISAPI是多线程的方式,这样就更快了。但是存在一个问题:很多PHP扩展是以Linux的多进程进行开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因此在IIS下CGI模式才是PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,消耗巨大。
为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI开源让PHP的进程重复利用而不是每一个新的请求就开启一个进程。同时FastCGI也可以运行几个进程同时执行。这既解决了CGI进程消耗大的问题也用上了CGI进程模式不存在线程安全问题的优势。
因此,如果是使用ISAPI的方式来运行PHP就必须用ThreadSafe的版本,而FastCGI模式运行PHP的话就没必要用线程安全检查了。
PS:在winows环境下,如果你使用的web server是apache或者iis7以下版本,则应该选择线程安全的安装,而如果你使用的是FAST-cgi模式 可以选择非线程安全 因为webserver 能保证线程安全。