❶ 如何判断php 是线程安全ts还是非线程安全nts版的
可以打印phpinfo();这个函数会告诉你
从字面意思上理解,None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源。
再来看PHP的两种执行方式:ISAPI和FastCGI。FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI(无论搭配 IIS 6 或 IIS 7)执行 PHP ,都建议下载、执行 non-thread safe 的 PHP (PHP 的二进位档有两种包装方式:msi 、zip ,请下载 zip 套件)。而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的PHP。
❷ php5 NTS和TS版本的区别,所谓的线程安全和非安全
先从字面意思上理解:
None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;
Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源。
再来看PHP的两种执行方式:
ISAPI和FastCGI。
FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI(无论搭配 IIS 6 或 IIS 7)执行 PHP ,都建议下载、执行 non-thread safe 的 PHP (PHP 的二进位档有两种包装方式:msi 、zip ,请下载 zip 套件)。
而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的PHP。
❸ php5 non-thread-safe和thread-safe这两个版本有何区别
从PHP5.2.10版本开始(现在有PHP5.2.10和5.3两个版本),有None-Thread Safe与Thread Safe两种版本的可供选择,这两种版本有何不同,作为使用者来说又应该如何选择呢?下面聚友将为您讲述。
先从字面意思上理解,None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查;Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽系统资源。
再来看PHP的两种执行方式:ISAPI和FastCGI。FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以 FastCGI(无论搭配 IIS 6 或 IIS 7)执行 PHP ,都建议下载、执行 non-thread safe 的 PHP (PHP 的二进位档有两种包装方式:msi 、zip ,请下载 zip 套件)。而线程安全检查正是为ISAPI方式的PHP准备的,因为有许多php模块都不是线程安全的,所以需要使用Thread Safe的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的非线程安全版本以提高性能。
❺ "nginx下php装什么版本及php的线程安全与非线程安全版本的区别
为了兼顾IIS下PHP的效率和安全,微软 给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开一个进程。
同时FastCGI也可以允许几个进程 同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优势。
❻ 安全线程的PHP5.6版本是否可以配置Zend Guard Loader for PHP 5.6,为什么配置失败,快来帮我解决问题
你配置的问题??
我们以php5.6 (
php5.6VC11 x86 Non Thread Safe
)版本为例,说明一下:x86是32位系统的意思,Non Thread Safe是非安全线程,Thread Safe是安全线程。php官网下载地址:http://windows.php.net/download/#php-5.6-nts-VC11-x86
下载好了php5.6 ,自己配置一下php.ini。
接下来,是我们说的重点。首先我们去官网下载,选择相适用的php版本的ZendGuard ,我们这里是php5.6版本,所以要下载适用它的ZendGuard版本。ZendGuard的官方下载地址:http://www.zend.com/en/procts/loader/downloads#Windows
我们这里是下载基windows系统的ZendGuard ,(如果你系统是linux,你就下载linux的ZendGuard)
解压并提取 ZendLoader.dll(Windows系统)或ZendGuardLoader.so(Linux),对应你的PHP版本。
下载了Zend Guard Loader
for PHP 5.6,解压文件后复制ZendLoader.dll到php安装路径的ext目录中,
在php.ini配置加入:
[Zend.loader]
zend_extension="C:/php/ext/ZendLoader.dll"
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
zend_loader.license_path=
总结一下:
【Linux 和 Mac OS X环境下】
zend_extension="/usr/lib/php/moles/ZendGuardLoader.so"(替换成自己的ZendGuardLoader.so路径)
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
重新启动Web服务器。
【Windows(非线程安全的php版本)】
zend_extension="c:/php/ext/ZendLoader.dll"(替换成自己的ZendGuardLoader.dll路径)
zend_loader.enable=1
zend_loader.disable_licensing=0
zend_loader.obfuscation_level_support=3
重新启动Web服务器。
测试:新建文本文档,填写下面内容:<?phpphpinfo();?>保存,然后更改文件名为phpinfo.php放到你域名根目录,然后通过你的域名+phpinfo.php浏览查看,有查看到ZendGuard 就说明安装成功,否则就安装失败。
或者:打开windows的“运行”输入cmd,切换路径到你php安装目录,执行php -v 回车。假如:你的php安装在e盘的php文件 ,命令如下:①cd E:/php 回车。②E: 回车 进到你想要的路径下。③php -v 回车有查看到有加载zendloader 就说明安装成功,否则就安装失败。
安装ZendGuard失败原因如下:①你安装了低于php5.3的版本②不支持64位的php,只支持32位的
③Windows下,Zend Loader only works with NTS PHP!
ZendGuard只支持NTS(Non Thread Safe)版的php,TS(Thread Safe安全线程)版的不支持。
如何判断:
通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。
按住ctrl+f快捷键,输入Thread Safety ,查看里面属性是不是enabled。
附上NTS和TS的区别
NTS:Non Thread Safe
非安全线程, 在执行时不进行线程(Thread)安全检查。
TS:Thread Safe
安全线程, 执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。
注意事项
ZendGuard只适用非线程安全版本的php
❼ 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的改进版
❽ php版本选择问题.VC6和VC9的区别,TS和NTS如何选择
TS是Thread Safety,代表线程安全,而NTS是None Thread Safe代表非线程安全。
Windows系统下才分线程安全与非线程安全,
windows + Apache + PHP(模块) :使用线程安全版本。
windows + Apache + PHP(FastCGI) :使用非线程安全版本。
如果你的电脑是32位的, 那装x86的版本,如果是64位的, 装x64的版本!
一般来说不区分32位和64位,或者64位操作系统兼容32位的PHP,但是在某些操作系统上还是区分32位和64位的,例如windows 2008。
vc6和vc9是指vc运行库的版本,你PHP版本标志的是VC9,那么运行的时候,需要安装vc9
VC9 -是安装运行使用 Visual Studio 2008 生成的 C++ 应用程序所必需的运行时组件。
这篇教程文章里提供700多个PHP版本下载。(700个PHP版本一键切换)
网络搜索这个文章标题:
PHP集成环境如何自定义PHP版本,同时运行多个php版本一键开启模块。
搜到的文章中,在文章的附件里有提供PHP历史版本下载,差不多700多个PHP版本,最老和最新版本都包含了。如果你找不到,就找原文吧,因为你搜到的文章可能是被其他网站转载的。
建议使用PHPWAMP绿色集成环境,700个PHP版本随意切换,多版本同时运行。
(网络搜PHPWAMP有详细的使用教程,能同时运行多个PHP版本,一键去端口等)
❾ php线程安全版和非线程安全版应该用哪个
Apache服务器就用非线程安全的 IIS就用线程安全的
❿ Nginx下php装什么版本及PHP的线程安全与非线程安全版本的区别
1. VC6与VC9的区别:
VC6版本是使用Visual Studio 6编译器编译的,如果你的PHP是用Apache来架设的,那你就选择VC6版本。
VC9版本是使用Visual Studio 2008编译器编译的,如果你的PHP是用IIS来架设的,那你就选择 VC9版本。
VC9版本是针对IIS服务器的版本,没有对APACHE的支持,而VC6版本对IIS和Apache都提供了支持
2.Ts与nts的区别:
Windows版的PHP从版本5.2.1开始有Thread Safe和NoneThread Safe之分。
先从字面意思上理解,Thread Safe是线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源。Non Thread Safe是非线程安全,在执行时不进行线程(Thread)安全检查。
3.PHP的两种执行方式:ISAPI和FastCGI。
ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择ThreadSafe版本;
而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择NonThread Safe版本。通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。
来源:PHP版本的区别与用法详解-http://www.leixuesong.cn/259