• PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别


    转载:http://www.cnblogs.com/whoknows/articles/2425841.html

    VC6与VC9

       对于VC6还是VC9版本的选择,PHP官方网站有详细的描述,原文如下:

    Which version do I choose?
    
    If you are using PHP with Apache 1 or Apache2 from apache.org you need to use the VC6 versions of PHP
    If you are using PHP with IIS you should use the VC9 versions of PHP
    VC6 Versions are compiled with the legacy Visual Studio 6 compiler
    VC9 Versions are compiled with the Visual Studio 2008 compiler and have improvements in performance and stability. The VC9 versions require you to have the Microsoft 2008 C++ Runtime (x86) or the Microsoft 2008 C++ Runtime (x64) installed
    Do NOT use VC9 version with apache.org binaries
    我该选择哪个版本?
    
    如果你在apache1或者apache2下使用PHP,你应该选择VC6的版本
    如果你在IIS下使用PHP应该选择VC9的版本
    VC6的版本使用visual studio6编译
    VC9使用Visual Studio 2008编译,并且改进了性能和稳定性。VC9版本的PHP需要你安装Microsoft 2008 C++ Runtime
    不要在apache下使用VC9的版本

    TS和NTS

    TS指Thread Safety,即线程安全,一般在IIS以ISAPI方式加载的时候选择这个版本。

    NTS即None-Thread Safe,一般以fast cgi方式运行的时候选择这个版本,具有更好的性能。

      从2000年10月20日发布的第一个Windows版的PHP3.0.17开始的都是线程安全的版本,这是由于与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就必须用Thread Safe(线程安全)的版本;而用FastCGI模式运行PHP的话就没有必要用线程安全检查了,用None Thread Safe(NTS,非线程安全)的版本能够更好的提高效率。

    如何查看当前运行的PHP的版本?一个很简单的办法就是phpinfo();

    Thread Safety disabled是NTS,enabled是TS

    Configure Command看到VC98字样的是VC6,Compiler标明 MSVC9 (Visual C++ 2008) 的是VC9 (或者MSVC11 (Visual C++ 2012)等更高版本)

    在WIN7下:IIS7+NTS+FastCGI+vc9 是最佳搭档或者apache+fastcgi+nts+vc6。

    在WINXP下:Apache+TS+Apache module +vc6最合适的搭档。

    http://down.chinaz.com/server/201111/1329_1.htm

  • 相关阅读:
    嵌套使用Using Statement造成对象被dispose多次 CA2202
    ASP.NET 4.0: 请求验证模式变化导致ValidateRequest=false失效
    IIS 7.0的集成模式和经典模式
    设计模式之—简单工厂设计模式
    c#总结(一)
    数据库分离附加工具
    深入理解C#之 参数传递 ref out params
    ASP.NET MVC 学习笔记(一)
    C#实现根据IP 查找真实地址
    c# 新特性
  • 原文地址:https://www.cnblogs.com/M-D-Luffy/p/6203047.html
Copyright © 2020-2023  润新知