【澳门京葡网站】PHP线程安全和非线程安全有啥样分别

再来看PHP的两种执行方式,FastCGI执行方式是以单一线程来执行操作,web sever 本身能保证线程安全,如果你使用的web server,因此在IIS下CGI模式才是PHP运行的最安全方式,又利用上了CGI进程模式不存在线程安全问题的优势,我们先来看一段PHP官网的原话

先从字面意思上知道,None-Thread
Safe正是非线程安全,在举行时不举办线程(thread)安检;Thread
Safe正是线程安全,实践时会进行线程(thread)安检,以免止有新供给就开发银行新线程的
CGI 试行方式耗尽系统财富。

何以是线程安全与非线程安全?

线程安全便是在二十三十二线程情况下也不会出现数量不等同,而非线程安全就有异常的大可能出现数量不一致等的动静。

线程安全由于要力保数据的一致性,所以对财富的读写举行了决定,换句话说扩展了系统开拓。所以在单线程情况中效能比非线程安全的效用要低些,不过即使线程间数据有关,供给确认保障读写顺序,用线程安全形式

本条第一是针对性web server 来说,在windows情状下,借使你利用的web server
是apchae 可能 iis
7以下版本,则应该接纳线程安全的安装文件,而一旦您选拔法斯特-cgi情势时,能够挑选非线程安全,因为
web sever 自身能确定保证线程安全。
自然还会有二进制文件编写翻译时所运用的编写翻译器:vc9 (vs种类) vc6(gcc)

如楼上所言,是本着web server的,部分web
server在拍卖利用乞求的时候是用三十二线程而非多进度的方法管理,线程情势因为关乎到分享存放器和内部存款和储蓄器,所以很轻松失误,那个时候程序就供给花一些外加的阅历去管理贮存器中的数据一致性,即确认保证线程安全。
故而是或不是选用线程安全首要看您的web
server所采取的PHP央浼管理格局,假使是二十多线程管理,那么请采纳线程安全的,不然选择非线程安全的,如楼上所说法斯特-cgi情势可选拔非线程安全的

先从字面意思上领悟,None-Thread
Safe正是非线程安全,在实施时不实行线程(thread)安检;Thread
Safe就是线程安全,实行时会进行线程(thread)安检,防止止有新供给就开动新线程的
CGI 实行办法耗尽系统财富。

再来看PHP的二种实施办法:ISAPI和法斯特CGI。FastCGI试行措施是以单一线程来推行操作,所以无需实行线程的安检,除去线程安检的警备反而能够抓好推行效能,所以,要是是以
法斯特CGI(无论搭配 IIS 6 或 IIS 7)施行 PHP ,都提出下载、实践 non-thread
safe 的 PHP (PHP 的二進位檔有兩種包裝格局:msi 、zip ,請下載 zip
套件)。而线程安检正是为ISAPI情势的PHP希图的,因为有相当多php模块都不是线程安全的,所以必要使用Thread
Safe的PHP。

聊到此地,我们应该通晓应该如何抉择哪位版本的PHP了。None-Thread Safe or
Thread Safe,您会选取哪位?

Windows下的PHP今后的本子现已是5.3.6,以后的Windows版本能够在PHP官方PHP
For
Windows(
x86 Non Thread Safe、VC9 x86 Thread Safe、VC6 x86 Non Thread Safe、VC6
x86 Thread Safe等多个版本。那么这么些本子有如何界别吧?

VC9的本子是用legacy VS 二〇〇八编写翻译的,VC6的版本是用legacy VS6编写翻译的。

借使您是在windows下利用IIS+PHP的话,你须要下载VC9的本子。
若果您是在windows下使用Apache+PHP的话,你需求下载VC6的本子。

Non Thread Safe是指非线程安全,Thread Safe则是指线程安全。

万一是使用ISAPI的措施来运作PHP就无法不用Thread
Safe(线程安全)的本子;而用法斯特CGI情势运转PHP的话就平昔不须要用线程安检了,用None
Thread Safe(NTS,非线程安全)的本子能够更加好的进步作用。

 

从3000年7月31日公布的首先个Windows版的PHP3.0.17开头的都是线程安全的本子,那是由于与Linux/Unix系统是行使多进度的办事议程各异的是Windows系统是使用二十多线程的劳作方式。假使在IIS下以CGI情势运维PHP会比异常的慢,那是出于CGI形式是创设在多进程的底子之上的,而非三十二线程。

澳门京葡网站,大家先来看一段PHP官方网站的原话:

再来看PHP的三种实施办法:ISAPI和法斯特CGI。法斯特CGI实施措施是以单一线程来实行操作,所以没有须求进行线程的安检,除去线程安检的防止反而能够增进实施功用,所以,假若是以
法斯特CGI(无论搭配 IIS 6 或 IIS 7)执行 PHP ,都建议下载、实施 non-thread
safe 的 PHP (PHP 的二?位?n有?煞N包?情势:msi 、zip ,?下? zip
套件)。而线程安检就是为ISAPI格局的PHP筹划的,因为有广大php模块都不是线程安全的,所以须求运用Thread
Safe的PHP。

什么样判定:

经过phpinfo(); 查看当中的 Thread Safety
项,那个种类正是翻开是或不是是线程安全,要是是:enabled,一般的话应该是ts版,不然是nts版。

 

from:

相似大家会把PHP配置成以ISAPI的方法来运营,ISAPI是多线程的法子,那样就快多了。但存在三个主题素材,很多常用的PHP扩充是以Linux/Unix的多进度观念来支付的,那个扩张在ISAPI的秘籍运营时就能够出错搞垮IIS。因此在IIS下CGI方式才是PHP运营的最安全格局,但CGI格局对于每一种HTTP央浼都必要再行加载和卸载整个PHP景况,其消耗是高大的。

Which version do I choose?

 

聊到此地,我们应该知道应该怎么抉择哪个版本的PHP了。None-Thread Safe or
Thread Safe,您会挑选哪位?

为了兼顾IIS下PHP的频率和本溪,微软提交了法斯特CGI的化解方案。法斯特CGI能够让PHP的进度重复使用而不是每贰个新的伏乞就重开一个进度。同不日常候法斯特CGI也能够允许多少个经过同期施行。这样既减轻了CGI进程格局消耗太大的主题素材,又选拔上了CGI进程情势不设有线程安全难题的优势。

IIS

If you are using PHP as FastCGI with IIS you should use the Non-Thread
Safe (NTS) versions of PHP.

最后总括

由此,若是是接纳ISAPI的办法来运作PHP就无法不用Thread
Safe(线程安全)的本子;而用法斯特CGI格局运维PHP的话就从未有过需求用线程安检了,用None
Thread Safe(NTS,非线程安全)的版本能够更加好的进步效用。

Apache

Please use the Apache builds provided by Apache
Lounge. They provide VC9, VC11 and VC14
builds of Apache for x86 and x64. We use their binaries to build the
Apache SAPIs.

If you are using PHP as module with Apache builds
from apache.org (not recommended) you need to use the older VC6
versions of PHP compiled with the legacy Visual Studio 6 compiler.
Do NOT use VC9+ versions of PHP with the apache.org binaries.

With Apache you have to use the Thread Safe (TS) versions of PHP.

下面一段话翻译过来正是:

自己选择哪位版本?

IIS
万一您利用的是PHP的法斯特CGI IIS,你应当利用非线程安全(NTS)版本的PHP。

Apache
请使用Apache Lounge提供的Apache创设。
他们提供了针对性x86和x64的Apache的VC9,VC11和VC14版本。
大家利用他们的二进制文件构建Apache SAPI。

一经你利用PHP作为apache.org(不引入)的Apache模块,你须求使用旧的Visual
Studio 6编写翻译的VC6本子的PHP。 不要采纳apache.org二进制文件的VC9
+版本的PHP。

使用Apache,您必须利用Thread Safe(TS)版本的PHP。

 

大家来分解下方面包车型地铁开始和结果:

从贰仟年三月二十八日公告的第八个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的功能和平安,微软提交了法斯特CGI的缓慢解决方案。法斯特CGI能够让PHP的经过重复使用实际不是每叁个新的伸手就重开贰个历程。同不通常间FastCGI也可以允许多少个进程同一时候实行。这样既消除了CGI进度格局消耗太大的难点,又利用上了CGI进度形式空头支票线程安全主题素材的优势。

为此,如若是行使ISAPI的情势来运营PHP就非得用Thread
Safe(线程安全)的版本;而用法斯特CGI格局运营PHP的话就不曾须求用线程安检了,用None
Thread Safe(NTS,非线程安全)的本子能够越来越好的进步功能。