PHP中VC6、VC9、TS、NTS版本的区别与用法详解

简介:

Thread safe(线程安全)是运行在Apache上以模块的PHP上,如果你以CGI的模式运行PHP,请选择非线程安全模式(non-thread safe)。

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)安全检查。

nts版本会有_nts后缀。官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe (ts)版本的PHP来使用。
XAMPP在http-xampp.conf中默认配置是使用ISAPI的方式

3.PHP的两种执行方式:ISAPI和FastCGI。
ISAPI执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择ThreadSafe版本;

而FastCGI执行方式是以单一线程来执行操作,所以不需要进行线程的安全检查,除去线程安全检查的防护反而可以提高执行效率,所以,如果是以FastCGI来执行PHP,建议选择NonThread Safe版本。

通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版。

apache中的配置方式:

#下面这个是加载TS版本的php必须的
LoadModule php5_module “xxx/php5apache2_2.dll”
#下面这行可有可无

AddType application/x-httpd-php-source .phps
AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt


#下面这两行是加载NTS版本的php必须的,不可以直接写成Action application/x-httpd-php “c:/wamp/bin/php/php3.5.6/php-cgi.exe”!
ScriptAlias /php/ "C:/wamp/bin/php/php3.5.6/"
Action application/x-httpd-php “/php/php-cgi.exe”

#另外,还要有之前的AddType application/x-httpd-php .php .php5 .php4 .php3 .phtml .phpt,这样才能认识php格式的文件

#这样配置完可能还会因为权限问题而无法用php-cgi.exe解析php网页,所以还要加上下面这段

<Directory "C:/wamp/bin/php/php5.3.6/">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
</Directory>

php版本区分ts和nts,其插件也区分。这点要注意。插件区分php版本(一般是大版本,如5.4,5.5)和ts版本。

例如ts版本插件配置(以php5.4版本为例):


[memcache]
extension=php_memcache.dll

[memcached]
;extension=php_memcached.dll

[mongodb]
extension=php_mongo-1.6.8-5.4-vc9.dll


[Xdebug]
;download_url=http://xdebug.org/download.php
zend_extension="D:\phpsetup\php5.4\ext\php_xdebug-2.3.3-5.4-vc9.dll"
;xdebug.var_display_max_children=128
;xdebug.var_display_max_data=512
xdebug.var_display_max_depth=10
xdebug.max_nesting_level=100
nts版本插件配置:
[memcache]
extension=php_memcache.dll

[mongodb]
extension=php_mongo-1.6.8-5.4-vc9-nts.dll


[Xdebug]
zend_extension="ext/php_xdebug-2.3.3-5.4-vc9-nts.dll"
;xdebug.var_display_max_children=128
;xdebug.var_display_max_data=512
xdebug.var_display_max_depth=10
xdebug.max_nesting_level=100


目录
相关文章
|
3月前
|
PHP Apache
centos7.9 安装php7.0以上版本
centos7.9 安装php7.0以上版本
69 2
|
4月前
|
PHP
PHP public、protected、private、static、abstract、final、interface、implements 区别对比
PHP public、protected、private、static、abstract、final、interface、implements 区别对比
27 0
|
8月前
|
PHP
PHP - Laravel Blade模板注释 {{-- 注释 --}} 与 <!-- 注释 --> 的区别
PHP - Laravel Blade模板注释 {{-- 注释 --}} 与 <!-- 注释 --> 的区别
62 0
|
4月前
|
PHP 调度
PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别
PHP CGI、FastCGI、PHP-FPM、PHP-CGI 区别
28 5
|
4月前
|
PHP
php中elseif 和else if的区别
@(黑线)以前貌似看到if这里,就直接跳了,可是今天再读文档,又发现了点东西... @(乖)可能你已经知道了php存在elseif 和else if,保留了c的风格。
23 0