php版本比较.docx_第1页
php版本比较.docx_第2页
php版本比较.docx_第3页
php版本比较.docx_第4页
php版本比较.docx_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PHP版本VC6与VC9、Thread Safe与None-Thread Safe等的区别最近发现很多PHP程序员对PHP版本知识了解不是很清楚,自己也看了不少类似的文章,还是感觉不够明确和全面,网上的结论又都是模棱两可,在此,给出最完整甚至武断的解释。 本文讲解:VC6与VC9,Thread Safety与None-Thread Safe,Apache module与fastcgi的区别与选择。 PHP的大版本主要分三支:PHP4/PHP5/PHP6 其中,PHP4由于太古老、对OO支持不力已基本被淘汰,请无视PHP4。 PHP6由于基本没有生产线上的应用,还基本只是一款概念产品,很多功能已在PHP5.3.3上实现,所以也不详述,请无视PHP6。 PHP5的版本主要分四支:PHP5.2之前的版本、PHP5.2.X、PHP5.3和日前发布的PHP5.4。 那我们应该如何选择适用自己项目的版本呢? PHP5.2之前的版本不值得考虑,因为某些功能缺陷或者BUG,PHP5.2之前的版本。PHP5.4还处于Beta试用的版本号,非稳定版本,请无视PHP5.4。 主流PHP程序对PHP5.2.X的兼容性最好,而每次版本号的升级带来的都是安全性和稳定性的改善,所以宜挑选最新的版本。目前PHP5.2系列最新的是PHP5.2.17。 而如果产品是自己开发自己使用,PHP5.3在某些方面更具优势,在稳定性上更胜一筹,增加了很多PHP5.2所不具有的功能,比如内置php-fpm、更完善的垃圾回收算法、命名空间的引入、sqlite3的支持等等,是部署项目值得考虑的版本,强烈推荐PHP5.3.3。 除了版本号的不同,同一版本号的PHP版本也有区别,并且在选择PHP扩展的时候需要注意。 install版:可执行的MSI格式安装包。 ZIP版:解压即可用,与install版无区别。建议选择ZIP版。 DEBUG版:请无视。 VC6与VC9 对于VC6还是VC9版本的选择,PHP官方网站有详细的描述,原文如下: Which version do I choose? If you are using PHP with Apache 1 or Apache2 from 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 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 在WIN7下:IIS7+NTS+FastCGI+vc9 是最佳搭档或者apache+fastcgi+nts+vc6。 在WINXP下:Apache+TS+Apache module +vc6最合适的搭档。 PHP语言简介PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。 它可以比 CGI或者Perl更快速的执行动态网页。用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。PHP具有非常强大的功能,所有的CGI的功能PHP都能实现,而且支持几乎所有流行的数据库以及操作系统。最重要的是PHP可以用C、C+进行程序的扩展!特性 1、开放的源代码: 所有的PHP源代码事实上都可以得到。 2、PHP是免费的。 和其它技术相比,PHP本身免费。 3、php的快捷性 程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP可以被嵌入于HTML语言,它相对于其他语言,编辑简单,实用性强,更适合初学者。 4、跨平台性强: 由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS下。 5、效率高: PHP消耗相当少的系统资源。 6、图像处理: 用PHP动态创建图像 7、面向对象: 在php4,php5 中,面向对象方面都有了很大的改进,现在php完全可以用来开发大型商业程序。 8、专业专注: PHP支持脚本语言为主,同为类C语言。技术应用 1,伪静态 2,静态页面生成 3,数据库缓存 4,过程缓存 5,div+cssw3c标准 6,大负荷 7,分布式 8,jquery框架集成 9,flex 10,桌面程序应用(不擅长) 11,支持MVC模型PHP3PHP3跟Apache服务器紧密结合的特性, 加上它不断的更新及加入新的功能,而且几乎支持所有主流与非主流数据库,再以它能高速的执行效率,使得PHP在1999年中的使用站点已经超过了150000。加上它的源代码完全公开,在 Open Source意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新的活力,使得PHP无论在UNIX、LINUX或是Windows的平台上都可以有更多新的功能。它提供丰富的函数,使得在程序设计方面有着更好的支持。PHP4PHP4.0整个脚本程序的核心大幅更动,让程序的执行速度,满足更快的要求。在最佳化之后的效率,已较传统CGI或者ASP等程序有更好的表现。而且还有更强的新功能、更丰富的函数库。无论您接不接受,PHP 都将在 Web CGI 的领域上,掀起巅覆性的革命。对于一位专业的Web Master 而言,它将也是必修课程之一。 PHP 4.0是更有效的,更可靠的动态Web页开发工具,在大多数情况运行比 PHP 3.0要快,其脚本描述更强大并且更复杂, 最显著的特征是速率比的增加。PHP4.0这些优异的性能是PHP 脚本引擎重新设计产生的结果:引擎由 AndiGutmans 和 Zeev Suraski从底层全面重写。PHP4.0 脚本引擎 Zend引擎,使用了一种更有效的编译执行方式, 而不是PHP 3.0 采用的执行 当解析时模型。PHP4的优越性:PHP4在3.0版的基础上增加或增强了许多有用的特征,主要如下: (1)别名:在PHP4中,可以利用引用为变量赋值,这给编程带来了很大的灵活性。 (2)扩充了API模块:PHP 4.0 为扩展的 API 模块的提供了扩展PHP接口模块, 它比旧的 API 版本显著地快。 PHP 模块已有的及最常用的接口多数被转换到使用这个扩展的接口。 (3)自动资源释放:PHP4增加了引用计数功能,这种新技术的引入使PHP4具有了自动内存管理功能,减轻了开发人员的负担。 (4)布尔类型:PHP 4.0 支持布尔类型。 (5)进程生成:在 UNIX 环境下的 PHP 4.0 提供了一个很智能和通用的生成进程, 使用了一种名为基于automake/libtool的系统生成技术。 (6)COM/DCOM 支持:PHP 4.0 提供 COM/DCOM 支持 ( 仅用于Windows 环境 ) 可以无缝地存取和访问 COM 对象。 (7)与PHP 3.0 兼容性很好:PHP 4.0 是与 PHP 3.0 代码向后兼容性接近100% 。由于 PHP 4 的改进的体系结构,两者有一些细微的差别,但是大多数人将可能永远不可能遇上这种情况。 (8)配置:PHP4重新设计和增强了PHP.ini文件,这使得用PHP.ini来配置PHP显得极为容易,这个文件可以在运行时被Apache(unix系统)或由Windows 注册(Windows 环境)。 (9)加密支持:PHP4实现了完整的加密, 这些加密功能是一个完整的mycrypt库,并且 PHP 4.0 支持哈希函数。Blowfish,TripleDES,MD5,并且SHA1 也是可使用的一些加密算法。 (10)类型检查:PHP 4.0 支持同一操作符用于评类型检查:=( 3 等号运算符), 为在两个值和其类型之间作检查。例如, 3 =3 将视为假 ( 类型是不同的 ), 而 3 =3 ( 相等判断 ) 将视为真。 (11)FTP 支持:PHP 4.0 支持 FTP 。通常, 你会为通过一个调制解调器连接下载一个大文件提供一个接口。然而, 如果你确实有需要,可以使用PHP 。 (12)PHP4新增函数或功能增强函数:PHP 4.0 新增了许多函数,同时也将许多现有的函数功能进行了增强,以下是一些例子。 array_count_values() eval() foreach() include() ob_end_clean() ob_end_flush() ob_get_contents() ob_start() strip_tags() unset() (13)here打印:PHP 4.0 的Here打印是与Perl类似的, 尽管完全不相同。Here是打印大容量文章的一个有用的方法,例如在 HTML文件中,不会漏掉任何一个字符,例如目录标记。 (14)HTTP Session fallback 系统:为 HTTP Session管理的一个 fallback 系统在 PHP 4.0被实现 。缺省情况下,Session标识符由cookies存储。如果没有cookies支持或一项cookies任务失败,Session标识符自动被创建并在 URL 的查询字符串中被携带。 (15)ISAPI 支持:PHP 4.0 能作为一个个性化的 ISAPI 模块作为 IIS插件 。这比 PHP 3.0 更有效, 它作为一个外部的程序来运行。 (16)内存:PHP 4.0 能更有效的使用内存, 导致较少的内存占用消耗,这主要归功于引用计数技术的实现。 (17)其他类成员函数:在 PHP 4.0 你能在成员函数本身的作用域或全局范围内调用其他类的成员函数。例如,你能用一个子函数覆盖父函数,并在子函数中调用父函数。 (18)多维数组:在 PHP 4.0 ,利用GET,POST,Cookies的进行的数据传输支持多维数组。 (19)个性化的 HTTP Session支持:HTTP Session处理, 包括 fallback 系统管理,在 PHP 4.0被它的新库函数实现 。在版本 3.0 中处理Session要求使用 PHPLIB 和第三方的库函数, 它比把Session直接地由 PHP 支持慢了许多。 (20)个性化的 Java 支持:PHP 4.0 支持和java的交互。这种个性化的Java 支持为PHP 在 Java 对象上创建和使用方法提供一个简单并且有效的工具。 (21)对象和数嵌套组:PHP 4.0 实现了功能更加强大的对象, 移去了 PHP 3.0存在的种种句法限制。对象能在数组以内被嵌套并且反过来也如此, 可以根据你的需要实现嵌套。 (22)面向对象的编程:PHP 4.0 为面向对象的编程和构造类及对象提供扩展的功能和新特征。PHP4实现了对象重载,引用技术等新技术。 (23)对象重载支持:对象重载语法允许第三方的基于面向对象的类库使用 PHP4 的面向对象的特征存取他们自身的功能。使用这个特征的一个 COM 模块已经被实现了。 (24)输出缓冲支持:PHP 提供了一个输出缓冲函数集合。输出缓冲支持允许你写包裹函数功能压缩缓冲区。在 PHP4 的输出缓冲支持允许 HTML 头信息存放, 无论 HTML的正文是否输出。头信息( header(), content type, and cookies ) 不采用缓冲 。 (25)增加了PCRE 库:PHP 4.0 包括一个 Perl 兼容的正则表达式(PCRE ) 库, 和正常regex库一起与 PHP 绑定。split 和replace PCRE 功能被支持。PCRE 和 Perl 正规表达式之间有一些细微差别。 (26)PHP.ini 文件:PHP.ini文件在 PHP4.0 被重新设计, 使用的 PHP 的配置PHP.ini是更容易并且更有效的。全部文件能被Apache 在运行时间操作 ( 在 Apache环境 下 ) 或由 Windows 注册表 ( 在 Windows 下面 ) 。被加入PHP.ini文件的配置指令自动地在所有相关的模块中被支持。 (27)引用计数:PHP 4.0 为系统中的每个数值提供了引用计数, 包括资源。一旦一个资源不再被任何变量引用,它自动地被释放以节省内存资源。利用这个特征的最明显的例子一个内置SQL查询的循环语句。在PHP 3.0中 ,每次递归另外的 SQL 结果集合重复申请内存,直到脚本执行完毕,这些结果集合占用的内存才被释放。 (28)支持引用:通过引用可以改变一个变量的值。 (29)函数的运行时绑定:PHP 4.0 的运行时间绑定功能允许你在他们被声明以前调用, 无论声明是否在代码以后或是在运行时间。 (30)类的运行时信息:PHP 4.0 支持在运行时刻存取下列类信息:一个对象的类名,一个对象的父类的类名字,以及对象函数所在的名字。 (31)服务器抽象层:为支持Web服务器提供了增强型 SAPI ( 服务器 API ) 接口,是 PHP 4.0 不可分的一部分。这个服务器抽象层,提供了通用的WEB服务器接口支持,支持多线程WEB服务器,为大多数的WEB服务器提供透明的支持, 这些服务器包括 Apache ,IIS ( ISAPI ), 以及 AOL 服务器。 (32)语法的点亮显示:PHP 4.0 语法的点亮显示允许开发者看见源代码而不是脚本, 这个功能比PHP 3.0中的更有效。它跑得更快,更执行得更好,并且产生更紧凑的HTML代码。 (33)由引用改变变量的值:PHP 4.0 由引用支持可变的赋值, “关联”的2个变量之中个的任何一个的值被改变,另外的变量的值同样被改变,这类似与C中的指针类型。 (34)在引用字符串中的变量引用:PHP 4.0 增强了在引用字符串中的变量引用。PHP5 PHP5在长时间的开发及多个预发布版本后,2004年7月13日,PHP5.0发布。该版本以Zend引擎为引擎,并且加入了新功能如PHP Data Objects(PDO)。现在PHP5.0版本强化更多的功能。首先,完全实现面向对象,提供名为PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直观地访问XML数据、名为SimpleXML的XML处理用界面。同时还强化了XMLWeb服务支持,而且标准支持SOAP扩展模块。数据库方面,PHP新版本提供旨在访问MySQL的新界面MySQL。除此前的界面外,还可以使用面向对象界面和预处理语句(Prepared Statement)等MySQL的新功能另外,PHP5.0上还捆绑有小容量RDBMS-SQLite 1、新的对象模式 (New Object Mode)PHP5 中的对象已经进行了较系统、较全面的调整,现在的样子可能看起来会有些类似于 Java。本小节着重讲述 PHP5 中新的对象模式,并举了一些较简易的例子来说明。就让本节成为你的 PHP5 之旅的一个新起点吧。:) * 构造函数和析构函数 * 对象的引用 * 对象的克隆 * 对象中的私有、公共及受保护模式 * 接口 (Interfaces) * 抽象类 * _call * _set 和 _get * 静态成员 构造函数和析构函数 在 PHP4 中,当函数与对象同名时,这个函数将成为该对象的构造函数,并且在 PHP4 中没有析构函数的概念。 在 PHP5 中,构造函数被统一命名为 _construct,并且引入了析构函数的概念,被统一命名为 _destruct。 对象的引用 在PHP4中,传递变量给一个函数或方法,实际是把这个变量做了一次复制,也就意味着你传给函数或方法的是这个变量的一个副本,除非你使用了引用符号“&” 来声明是要做一个引用,而不是一个 Copy。在 PHP5中,对象总是以引用的形式存在的,对象中的赋值操作同样也都是一个引用操作。 对象的克隆 当一个对象始终以引用的形式来被调用时,如果我想得到该对象的一个副本,该怎么办呢?PHP5 提供了一个新的功能,就是对象的克隆,语法为 _clone。 对象中的私有、公共及保护模式 PHP4 中,一个对象的所有方法和变量都是公共的,这意味着你可以在一个对象的外部操作其中的任意一个变量和方法。PHP5 引入了三种新的用来控制这种存取权限的模式,它们是:公共的(Public)、受保护的(Protected)及私有的(Private)。 公共模式(Public):允许在对象外部进行操作控制。 私有模式(Private):只允许本对象内的方法对其进行操作控制。 受保护模式(Protected):允许本对象及其父对象对其进行操作控制。 接口 (Interfaces) PHP4中的对象支持继承,要使一个对象成为另一个对象的派生类,你需要使用类似 “class foo extends parent” 的代码来控制。PHP4 和 PHP5 中,一个对象都仅能继承一次,多重继承是不被支持的。不过,在 PHP5中产生了一个新的名词:接口,接口是一个没有具体处理代码的特殊对象,它仅仅定义了一些方法的名称及参数,此后的对象就可以方便的使用implement 关键字把需要的接口整合起来,然后再加入具体的执行代码。 这对提高代码的可读性及通俗性有很大的帮助,通过上面的例子可以看到,对象 foo 包含了displayable 和 printable 两个接口,这时我们就可以清楚的知道,对象 foo 一定会有一个 display() 方法和一个print() 方法,只需要去了解接口部分,你就可以轻易的操作该对象而不必去关心对象的内部是如何运作的。 抽象类 抽象类不能被实例化。 抽象类与其它类一样,允许定义变量及方法。 抽象类同样可以定义一个抽象的方法,抽象类的方法不会被执行,不过将有可能会在其派生类中执行。 _call PHP5 的对象新增了一个专用方法 _call(),这个方法用来监视一个对象中的其它方法。如果你试着调用一个对象中不存在的方法,_call 方法将会被自动调用。 _set 和 _get 这是一个很棒的方法,_set 和 _get 方法可以用来捕获一个对象中不存在的变量和方法。 类型指示 在 PHP5 中,你可以在对象的方法中指明其参数必须为另一个对象的实例。 静态成员 静态成员和静态方法在面象对象编程的术语中被称作 “类方法(class methods)” 和 “类变量(class variables)”。 “类方法” 在一个对象没有实例化前允许被调用。同样,“类变量” 在一个对象没有实例化前可以被独立操作控制(不需要用一个对象的方法来控制)。 2、异常处理 (Exceptions)异常处理是公认的处理程序错误的理想方法,在 Java 及 C 中都有这个概念,我们欣喜的看到,在 PHP5 已经加入了这方面的应用。你可以尝试使用 “try” 和 “catch” 来控制程序的错误。当有错误发生的时候,代码会把错误交给 “catch” 子句来处理,在 “catch” 子句中,你需要指明要把错误交给某个对象处理,这样做可以使代码结构看起来更清晰,因为现在我们可以把所有的错误信息交给一个对象来处理。 自定义错误处理 你可以很方便的用自定义的处理错误的代码来控制你的程序中的意外。你仅仅需要从异常类中派生出一个自己的错误控制类,在你自己的错误控制类中,你需要有一个构造函数和一个 getMessage 方法。 3、名称空间 (Namespace)名称空间对类的分组或函数分组很有用。它可以把一些相关的类或函数给组合到一起,方便以后调用。 例:名称空间 注意你需要在何种情况下使用名称空间,在实际运用中,你可能会需要声明两个或多个名称一样的对象来做不同的事情,那么你就可以把他们分别放到不同的名称空间中去(但接口是要相同的)。PHP6设想1.支持Unicode支持Unicode是有其必然,虽然Unicode占用较多的空间,但Unicode带来的便利性,远超过占用空间的缺点,尤其在国际化的今天,硬件设备越来越强大,网速也大幅度的提升,这么一点小小的缺点是可以忽略的。另外一点,PHP也可以在.ini文件中设定是否开启支持Unicode,决定权在你自己,这是一个不错的点子,关掉Unicode的支持,PHP的性能并不会有大幅度的提升,主要的影响在于需要引用字符串的函数。. 2.Register Globals 将被移除这是一个重要的决定,许多新进的PHP开发者会觉得Register Globals蛮方便的,但是却忽略了Register Globals会带来程序上安全性的隐患,大多数的主机上此项功能是关闭的,印象PHP4.3.x版开始时,此项默认设置值即是关闭状态,PHP6正式移除Register Globals也代表着如果程序是由PHP3时代的产物,将完全无法使用,除了改写一途外,别无他法。相信现在的PHP世界里,仍使用PHP3时代所产生的程序应该是少之又少。 3.Magic Quotes 将消失Magic

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论