PHP中VC6、VC9、TS、NTS版本的区别与用法详解
2015-11-27 21:05
761 查看
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
相关文章推荐
- 解决mac下laravel连接mysql错误
- php笔记----第十一章 会话控制
- php笔记----第十章 文件与目录操作
- php笔记----第九章 图像处理
- php笔记----第八章 日期与时间
- php笔记----第七章 正则表达式
- php笔记----第六章 字符串处理
- php笔记----第五章 数组
- php笔记----第四章 函数
- JAVA+PHP+阿里云组件纯手工实现POP、SMTP、IMAP开发邮件服务器(二)
- php笔记----第三章 流程控制
- php笔记----第二章 PHP基本语法
- php笔记----第一章 lamp概述
- 浅析PHP底层的运行机制和工作原理
- Yii之urlManager相关
- php学习笔记十:类与对象-基础
- 用PHP实现一个Amazon SES的代理服务器
- php学习笔记九:Array数组
- php学习笔记八:数据类型
- php学习笔记七:操作符