当前位置: 首页 > news >正文

PHP版本中的VC6,VC9,VC11,TS,NTS区别

以windows为例,看看下载到得php zip的文件名

php-5.4.4-nts-Win32-VC9-x86.zip


VC6:legacy Visual Studio 6 compiler,是使用这个编译器编译的。
VC9:Visual Studio 2008 compiler,就是这个编译器编译的。

这个其实没有什么太大的影响,因为从php 5.3,已经没有vc6版本提供下载了

 

IIS

如果想使用IIS配置PHP的话,那么需要选择Non-Thread Safe(NTS)版本的PHP

 

Apache

如果你是用的Apache的版本来自Apache Lounge(website:http://apachelounge.com/),可以使用PHP VC11 x86或者x64版本。

如果你使用的是从apache.org下载的Apache1或者Apache2来搭建PHP环境的话,只能使用VC6版本,无法使用VC9+以上版本。

 

VC9 VC11

VC9和VC11是PHP的最新版本(这两个版本分别通过Visual Studio 2008和Visual Studio 2012编译),其中包含了对于性能和稳定性的改进。

VC9版本要求用户安装Microsoft Visual C++ 2008 SP1 Redistributable Package(x86 | x64)

VC11版本要求用户安装Visual C++ Redistributable for Visual Studio 2012(x86 | x64)


TS:Thread Safe 线程安全, 执行时会进行线程(Thread)安全检查
NTS:Non Thread Safe 非线程安全, 在执行时不进行线程(Thread)安全检查

我使用Apache+PHP的模式下,一般是把PHP作为一个Module load到apache中,那么以apache父进程-多子进程的工作模式,是需要进行线程安全检查的,所以如果是以这种方式执行php,选择ts版本

那么如果是使用fastcgi,比如说用php-fpm管理php执行,则不需要进行线程安全检查,则选择nts版本的php

---------------------------------------------------------------------------------------------------------------------------
php 5.5.0 beta 1发布后, 安装出现问题, 家中电脑升级是成功的, 可公司的电脑一直提示无法加载到服务. 操作系统都一样的, 没什么区别. www.php.net官网左侧的说明提醒了我.

php-5.5.0beta1-Win32-VC11-x86

安装包的名字也已经说明了, 要运行必须安装vc11, x86表示32位, 假如是x64就是64位, 位数对于安装vc11有帮助, 个人建议vc11 x86, x64两个版本都安装上比较好, 反正没冲突.

然后启动服务, 搞定. phpinfo信息如下:

-----------------------------------------------------------------------------------------------------------------------------

VC6:legacy Visual Studio 6 compiler,就是使用这个编译器编译的。
VC9:Visual Studio 2008 compiler,就是用微软的VS编辑器编译的。
由于apache.org只提供VC6的版本,所以使用原版apache时只能使用VC6。(www.apachelounge.com上有apache VC9的版本提供,应该可以和PHP VC9配合,没用过)
TS:Thread Safe 线程安全, 执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源
NTS:Non Thread Safe 非线程安全, 在执行时不进行线程(Thread)安全检查
PHP的两种执行方式:ISAPI和FastCGI。
ISAPI(Internet Server Application Programming Interface)执行方式是以DLL动态库的形式使用,可以在被用户请求后执行,在处理完一个用户请求后不会马上消失,所以需要进行线程安全检查,这 样来提高程序的执行效率,所以如果是以ISAPI来执行PHP,建议选择Thread Safe版本
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


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

#下面这两行是加载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>
官方并不建议你将Non Thread Safe 应用于生产环境,所以我们选择Thread Safe 版本的PHP来使用。
XAMPP在http-xampp.conf中默认配置是使用ISAPI的方式

转载:http://www.cnblogs.com/codersay/p/4301783.html?utm_source=tuicool
 

相关文章:

  • Java编程思想学习笔记——字符串
  • 《构建执法》要点总结
  • iOS开发和Android开发的相似之处
  • 《mysql性能调优与架构设计》笔记:三mysql 安全管理
  • Spark和hadoop的关系
  • java7 API详解
  • DNS与BIND
  • 小组级git服务器的搭建
  • hdu 5491(位运算)
  • easyUI datetimebox 自定义显示格式
  • genymotion在后台总是打印这个错误的log 有大神知道怎么解决吗
  • 高效快捷解决一个TextView显示多种字体的控件SpannableTextView
  • JavaScript判断各浏览器CSS前缀的两种方式
  • nginx动静分离后的一些小事故,给出处理方法
  • C#--索引
  • [笔记] php常见简单功能及函数
  • Fundebug计费标准解释:事件数是如何定义的?
  • Github访问慢解决办法
  • Gradle 5.0 正式版发布
  • IDEA常用插件整理
  • React-redux的原理以及使用
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 原生JS动态加载JS、CSS文件及代码脚本
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • ###C语言程序设计-----C语言学习(6)#
  • #define 用法
  • (6)设计一个TimeMap
  • (C语言)fread与fwrite详解
  • (附源码)spring boot网络空间安全实验教学示范中心网站 毕业设计 111454
  • (附源码)ssm失物招领系统 毕业设计 182317
  • (九十四)函数和二维数组
  • (使用vite搭建vue3项目(vite + vue3 + vue router + pinia + element plus))
  • (转)程序员疫苗:代码注入
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .“空心村”成因分析及解决对策122344
  • .Net Remoting常用部署结构
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .NET使用HttpClient以multipart/form-data形式post上传文件及其相关参数
  • .net与java建立WebService再互相调用
  • .ui文件相关
  • @javax.ws.rs Webservice注解
  • @RunWith注解作用
  • @我的前任是个极品 微博分析
  • [AIGC] Java 和 Kotlin 的区别
  • [BZOJ2850]巧克力王国
  • [C++核心编程](四):类和对象——封装
  • [Django 0-1] Core.Handlers 模块
  • [Excel VBA]单元格区域引用方式的小结
  • [Flex] PopUpButton系列 —— 控制弹出菜单的透明度、可用、可选择状态
  • [IE编程] 了解Urlmon.dll和Wininet.dll
  • [leetcode] Multiply Strings
  • [LeetCode]—Permutations II 求全排列(有重复值)