Windows下的PHP安装文件线程安全和非线程安全的区别
clq
浏览(445) -
2017-10-28 10:30:21 发表
编辑
关键字: php
我们先来看一篇文章
--------------------------------------------------
Windows下的PHP安装文件线程安全和非线程安全的区别
Windows下的PHP版本分两种:线程安全版本与非线程安全版本。
要论两者的区别,详细论说起来比较麻烦,从使用者的角度,记住什么时候用哪种版本的区别就可以了吧:
1、windows + IIS + FastCGI :使用非线程安全版本。
解释:
以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,不存在多个线程之间可能引发的相互干扰(这种干扰通常都是由于全局变量和静态变量导致的)。由于省去了线程安全的检查,因此使用FastCGI方式比ISAPI方式的效率更高一些。
2、windows + IIS + ISAPI :使用线程安全版本。
解释:
PHP以ISAPI方式安装时,PHP没有独立的进程,而是作为DLL被IIS加载运行的,即是依附于Web服务器进程的。当Web服务器运行在多线程模式下(IIS正是这种情况),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中以ISAPI方式来安装PHP,原因是到目前为止,Apache通过mod_isapi.so模块来实现的ISAPI功能并不完整,并未完整实现微软对ISAPI所制定的全部规范。
5、windows + Apache + PHP(FastCGI) :使用非线程安全版本。
解释:
如果你要在Apache中以FastCGI方式使用PHP,则同在IIS中使用FastCGI的PHP的情况一样,你应该使用PHP的非线程安全的版本。原因是在Apache中以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,故应使用PHP的非线程安全版本以提高性能。
以上资料总结相关资料,分条明细,供选择。
--------------------------------------------------
文章内容基本上是正确的,不过估计大部分没写过 C 语言 10 年的人还是看不懂. 原因嘛要解释起来实在麻烦,简单来说 fastcgi 的时候可以选择非线程版本,其他的时候都要线程安全版本.其实线程安全版本的 php
就是传统的 php ,而非线程安全版本可以理解为 fastcgi 技术出现后的性能优化版本.
其实我个人认为直接选择线程版本就好(特别是对于还是没看懂的同学来说),原因有三:
1.那个优化并不怎么大,程序本来就应该是线程安全的,世上的软件大部分都是,您的环境其实没必要比 90% 的人都快;
2.当您的网站真的用户量大到需要用非线程版本的时候那要优化的就是不是 php 本身,而是要考虑哪些地方不要用 php ... (例如常用的静态化技术)
3.....上面两个理由就够了.
那么怎么区分手头上的 php 是不是线程安全版本呢,很简单如上所述正常的版本就是线程安全版,所以 非线程版本会在正常的 php 安装包或者压缩包中加有 "nts" 的字样,没有的就是正常的线程安全版本了.
NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.