PHP线程安全与非线程安全的区别:如何选择用哪一个

作者&投稿:江转 (若有异议请与网页底部的电邮联系)
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的非线程安全版本以提高性能。

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的非线程安全版本以提高性能。


以上资料总结相关资料,分条明细,供选择。

首先,Linux下的PHP,没有线程安全版和非线程安全版之分。从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,直至5.2.1版本开始有Thread Safe(TS,线程安全)和None Thread Safe(NTS,非线程安全)之分。

因为,Linux/Unix系统采用的是多进程的工作方式,而Windows系统采用多线程的工作方式。即:Linux系统的任务调度基本单位是进程,Windows系统的任务调度基本单位是线程(本观点来自自学与总结,不能保证百分之百正确)。

所以,在Windows系统的IIS下以CGI方式运行PHP会非常慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程,且CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。

于是,一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就快多了。但存在一个问题,很多常用的PHP扩展是以 Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。

为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用,而不是每一个新的请求就重开一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。

因此,如果是使用ISAPI的方式来运行PHP就必须用Thread Safe(TS,线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

名词解析:

  • IIS:Internet Information Services (互联网信息服务),是由微软公司提供的基于运行Microsoft Windows的互联网基本服务

  • CGI:Common Gateway Interface (通用网关接口),是外部应用程序(CGI程序)与Web服务器之间的接口标准

  • ISAPI:Internet Server Application Programming Interface (互联网应用程序接口),是为Microsoft所提的Internet server的API

  • FastCGI:CGI存在收到每个请求时都开辟一个进程等不足,FastCGI可以理解为是征对CGI的改进版



windows下用线程安全版,linux下用非线程安全版


wcstok函数有几个参数? c++\/c
第三个参数是后来增加的 用于线程安全的参数,不是重载.static wchar_t *lasts;把 static去掉就好了

360度翻转触控高端商务本,惠普Elite蜻系列轻薄本深度评测
都是八面玲珑,没有固定的地点,没有固定的时间,既要能够随时召开线上会议,也要时刻准备好线下面见不...可以说,能为商务人士提供快捷和安全的,惠普Elite 蜻系列都做到了。 屏幕素质方面,除了支持触控,还有...这款处理器采用了10nm SuperFin工艺,4核心8线程,基本频率2.8GHz,单核最高频率4.7GHz,热设计功耗28W,...

惠普g4-1017TX显卡驱动问题
2、可能是驱动下载过程中出现问题导致的了,建议您不要使用下载工具下载刷新程序,建议使用“目标另存为”的方式下载,如果您一定要使用下载软件来下载,请您使用单线程下载。3、可能是系统方面出现问题导致的了,建议您可以尝试重启机器在机器开机出现HP标识的时候按F8选择安全模式进入系统安装看看是否能够...

本人hp pavilion m7-1015dx 。i7-3610QM四核8线程处理器,但玩不了...
您好!感谢您选择惠普产品。根据您的描述,建议您参考下列信息:1、您这款机器是否可以运行您所述的游戏,是和游戏对机器的硬件和软件密切相关的,建议您可以根据游戏的说明书或者其官方网站显示的最低配置,查看下电脑的硬件和系统软件方面是否符合其流畅运行的要求,如果符合那么的电脑就可以运行此游戏的,...

惠普ENVY 15-j015tx怎么样
您好!感谢您选择惠普产品。HP ENVY 15-j015tx笔记本整机配置很好,超高性能的最新四代Intel处理器I7 确保了核心高速运算能力、独立显卡高达2G容量显存提供了高性能的画质处理效果、1T 超大容量存储空间的硬盘、15.6英寸大屏幕,使用范围很广,无论您是家用娱乐、办公记录、工程运算、图形处理、游戏运行都...

采用Intel X5520 双路四核超线程,共16颗CPU核心!什么意思
一共就是16核。4 在服务器选型时一定要问清楚厂家是几路,几个物理内核,几个逻辑内核对于CPU的理解,不同厂家是不一样的,有的cpu指的物理的,有的是逻辑的。IBM的2C是只2个物理CPU,实际上逻辑上是4C;HP 安腾系列(3600\/6600)的2C是指逻辑上的2C,实际是1颗物理CPU。

惠普g4-2218tx装Windows7 32位系统可用内存只有900多m,如何解决?只能装...
BIOS刷新程序下载地址:ftp:\/\/ftp.hp.com\/pub\/softpaq\/sp58501-59000\/sp58938.exe 下载驱动请注意:请不要使用下载工具下载程序,建议使用“目标另存为”的方式下载,如果您一定要使用下载软件来下载,请您使用单线程下载。刷新BIOS需注意:①下载BIOS的时候,不要使用下载工具;②连接外接电源适配器与...

T0级别的旗舰SSD有多快,轻松冲破7GB\/s,惠普FX900 pro尝鲜
此外, 还支持 LDPC 纠错机制, 充分保障数据传输的精准度和安全性。测试篇:老规矩先来介绍一下测试平台:CPU:i5 12600k 散热器:酷冷至尊 幻镜360水冷 主板:技嘉Z690 DDR4 内存:金百达 DDR4 3200灯条 显卡:影驰RTX2060 super 硬盘:惠普 FX900 PRO 2TB 电源:酷冷至尊 GX750白牌 机箱:酷冷...

惠普cq42能换CPU吗
您好,感谢您选择惠普产品。1、机器的CPU是集成在主板上的,通常无法进行更换。升级CPU很容易导致周边硬件的连带故障,因此也建议您不要更换。如果您由于特殊原因必须要升级CPU,那么您可以联系当地惠普服务中心看是否可以帮助到您。您可以通过以下网址查询距离最近的惠普金牌服务中心:http:\/\/stg.www8.hp....

操作系统有几种能详细介绍各种好处吗
·系统运行的安全、稳定性。·多线程运行模式。·多种UI,灵活,简单易操作。Windows Mobile:·界面类似于PC上的Windows,便于熟悉电脑的人操作。·预装软件丰富,内置OfficeWord, Excel, Power Point,可浏览甚至编辑,内置Internet Explorer,Media Player电脑同步非常便捷,完全兼容Outlook, Office Word, Excel等。·多媒体...

叙永县13645138169: PHP线程安全和非线程安全有什么区别 -
伯龙明竹: 1、windows + IIS + FastCGI :使用非线程安全版本.解释:以FastCGI方式安装PHP时,PHP拥有独立的进程,并且FastCGI是单一线程的,不存在多个线程之间可能引发的相互干扰(这种干扰通常都是由于全局变量和静态变量导致的).由于...

叙永县13645138169: PHP线程安全与非线程安全的区别:如何选择用哪一个 -
伯龙明竹: 首先,Linux下的PHP,没有线程安全版和非线程安全版之分.从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,直至5.2.1版本开始有Thread Safe(TS,线程安全)和None Thread Safe(NTS,非线程安全)之...

叙永县13645138169: php线程安全和不安全的区别 -
伯龙明竹: Windows下的PHP版本分两种:线程安全版本与非线程安全版本.要论两者的区别,详细论说起来比较麻烦,从使用者的角度,记住什么时候用哪种版本的区别就可以了吧:1、windows + IIS + FastCGI :使用非线程安全版本.解释:以FastCGI...

叙永县13645138169: Windows下的PHP安装文件线程安全和非线程安全的区别 -
伯龙明竹: Windows版的PHP从版本5.2.1开始有Thread Safe.这两者不同在于何处?到底应该用哪种?这里做一个简单的介绍 从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与Linux/Unix系 统是采用 多进...

叙永县13645138169: 线程安全与线程不安全的区别 -
伯龙明竹: 线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用.不会出现数据不一致或者数据污染. 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据

叙永县13645138169: 如何判断PHP 是线程安全还是非线程安全的 -
伯龙明竹: 判断PHP 是线程安全还是非线程安全:1.通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版.2.命令行:php -i|grep -i thread 结果:Thread Safety => disabled 【disabled表示非线程安全】 如果没有grep命令(windows),那就一个个找吧.

叙永县13645138169: 如何判断PHP 是线程安全ts还是非线程安全nts版的 -
伯龙明竹: 可以打印phpinfo();这个函数会告诉你 从字面意思上理解,None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 ...

叙永县13645138169: php5 NTS和TS版本的区别,所谓的线程安全和非安全 -
伯龙明竹: 先从字面意思上理解:1. None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;2. Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源.再来看...

叙永县13645138169: PHP5 non - thread - safe和thread - safe的区别 -
伯龙明竹: PHP5 non-thread-safe和thread-safe的区别 从PHP5.2.10版本开始(现在有PHP5.2.10和5.3两个版本),有None-Thread Safe与Thread Safe两种版本的可供选择,这两种版本有何不同,作为使用者来说又应该如何选择呢?先从字面意思上理解...

叙永县13645138169: Nginx下php装什么版本及PHP的线程安全与非线程安全版本的区别 -
伯龙明竹: PHP有2中运行方式:ISAPI和FastCGI , ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,而FastCGI执行方式 是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而 可以提高执行效率 nginx服务器使用的是FastCGI方式,选择非线程安全版本即可.建议装php5.5版本,性能,稳定性和支持都可

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网