文档章节

PHP x86,x64,VC6,VC9,VC11,TS和NTS的选择

newlooper
 newlooper
发布于 2015/08/31 15:27
字数 935
阅读 133
收藏 0

        在windows下搭建PHP环境时,我们从PHP官网下载PHP常常会遇到 x86,x64,VC6、VC9、VC11以及Thread Safe(以下简称TS)和Non Thread Safe(一下简称NTS)等多个版本的选择,不熟悉的往往只能随机选择一个版本下载安装,其结果往往是无法运行或者在运行过程中产生各种奇怪的问题。那 么这些不同的版本到底有哪些含义呢?官网已经做说明了:

  • x86与x64比较好理解,如果操作系统是32位的就选x86,如果是64位的就选x64。

  • VC6版本是指用Visual Studio 6编译器编译的,不过官方从5.3.5以后就不再提供VC6版本。

  • VC9版本是指用Visual Studio 2008编译的,下载安装需要事先安装Visual C++ Redistributable for Visual Studio 2008 SP1。

  • VC11版本是指用VisualStudio2012编译的,下载安装需要事先安装Visual C++ Redistributable for Visual Studio 2012。

  • TS:Thread Safe 线程安全,执行时会进行线程(Thread)安全检查,以防止有新要求就启动新线程的CGI执行方式而耗尽系统资源;

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

        与Linux/Unix系统采用多进程的工作方式不同的是Windows系统采用多线程的工作方式。如果在IIS下以CGI方式运行PHP会非常 慢,这是由于CGI模式是建立在多进程的基础之上的,而非多线程。一般我们会把PHP配置成以ISAPI的方式来运行,ISAPI是多线程的方式,这样就 快多了。但存在一个问题,很多常用的PHP扩展是以Linux/Unix的多进程思想来开发的,这些扩展在ISAPI的方式运行时就会出错搞垮IIS。因 此在IIS下CGI模式才是 PHP运行的最安全方式,但CGI模式对于每个HTTP请求都需要重新加载和卸载整个PHP环境,其消耗是巨大的。

        为了兼顾IIS下PHP的效率和安全,微软给出了FastCGI的解决方案。FastCGI可以让PHP的进程重复利用而不是每一个新的请求就重开 一个进程。同时FastCGI也可以允许几个进程同时执行。这样既解决了CGI进程模式消耗太大的问题,又利用上了CGI进程模式不存在线程安全问题的优 势。

        因此,如果是使用ISAPI的方式来运行PHP就必须用ThreadSafe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

如果是用Apache httpd来发布PHP,还会遇到另外一个问题:Apache httpd的官方发布版本只有VC6编译的,这也就意味着Apache httpd的官方最新版本与PHP的官方最新版本是不兼容的!

那么现有的Apache+PHP怎么配置呢?可以自己下载Apache httpd的源码自己用VC9或者VC11编译Apache httpd,或者下载PHP的源码用VC6编译,但这两个方式都比较折腾。再者就是下载第三方用VC9或VC11打包好的Apache httpd了,推荐http://www.apachelounge.com/,这也是PHP官方推荐的方式。

        另外需要说明的一点是:VC11不支持windows XP和windows Server 2003及以下版本的windows,所以,截止目前,VC9版本的最高官方发布版本是5.4.40。


本文转载自:

newlooper
粉丝 0
博文 17
码字总数 12645
作品 0
西城
私信 提问
PHP5 non-thread-safe和thread-safe的区别

None-Thread Safe就是非线程安全,在执行时不进行线程(thread)安全检查; Thread Safe就是线程安全,执行时会进行线程(thread)安全检查,以防止有新要求就启动新线程的 CGI 执行方式耗尽...

_xiaotudou
2016/07/19
39
0
apmserv下xdebug的配置

Apache 用vc9编译的, PHP用vc9编译的,xdebug也找vc9编译,正常配置,就不信特么的还出错(2014年1月23日 11:15:13) windows下,如果在配置文件中写指令 extension=phpxdebug.dll 在启动Apache时或...

大王回山
2012/07/22
0
0
Windows下开发PHP扩展

开发环境 Windows 10 (可以选用其它版本系统或使用虚拟机) Windows SDK 6.1 + Visual Studio 2008 (VC9, PHP5.4或更早版本编译工具) Visual Studio 2012 (VC11, PHP5.5和PHP5.6版本编译工具)...

他山之石
2016/07/08
546
0
解决Apache/PHP无法启动的问题

最近经常被问到Apache无法启动的情况,所以写一篇文章,总结一下Windows下经常遇到的 Apache/PHP 无法启动的情况的解决方法。 Apache/PHP 无法启动分两种情况: 1.、Apache无法启动,没加载p...

付翔
2015/01/23
0
0
PHP中VC6、VC9、TS、NTS版本区别与用法

1. VC6与VC9的区别: VC6 版本是使用 Visual Studio 6 编译器编译的,如果你的 PHP 是用 Apache 来架设的,那你就选择 VC6 版本。 VC9 版本是使用 Visual Studio 2008 编译器编译的,如果你...

蚊子888
2015/01/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
48分钟前
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
50分钟前
5
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部