PHP版本如何选择?应该使⽤哪个版本?
超过75%的⽹站使⽤了PHP作为开发语⾔,wordpress,phpmyadmin和其他⼀些开源项⽬的盛⾏,带来了⼀⼤批的长尾⽤户。然⽽,他们⼀般安装之后却很少升级。下图是⽬前PHP的使⽤统计。
惊⼈的是,此图的左半部分表⽰已经不被⽀持的PHP版本。PHP 5.2早在2011年1⽉已经不再维护。这并不意味着你就不能使⽤它,但是这意味着某些安全更新,你就⽆法跟进了。⼀些发⾏版将尝试修复⼀些BUG,但你的PHP版本似乎有点乏善可陈,因为,你正在使⽤的是2006年的过时技术。
该从哪⾥开始
已经没有⼈选择PHP 5.2版本了,但这些事情已经发⽣了,但我不是说我写这篇博客来吐槽什么,更不是说给你⼀些升级的指南。通常他们使⽤的都是⼀些2006开始的主机空间,他们有⼀个“长期⽀持”的版本,来避免使⽤更新的版本,或者他们⽬前还没有升级的打算。⼜或者,理由真的很多。然⽽,好东西在新版的PHP等着您。
PHP 5.3 加⼊了很多有⽤的OOP特性!例如:匿名函数,SPL扩展不仅仅是迭代器,神话般的DateTime扩展都已经集成在PHP 5.3⾥⾯。还加⼊极其重要的E_DEPRECATED的错误报告标志。它会提醒您现在⽤的那些特性,将在下⼀版本⽆法使⽤。如果您已经在使⽤PHP 5.3,那么您往后的升级道路将会更加顺畅。如果您有线上程序运⾏在低版本,我不建议您升级。
PHP 5.4则进⾏了⼀系列的优化,它具有更快的执⾏效率和更少的内存占⽤。以下是基准测试的结果。
不管你使⽤使⽤到traits特性,PHP 5.4提⾼了程序性能,并降低了硬件成本。所以,我建议您使⽤开源软件的时候要保持升级。
PHP 5.5 还在测试当中,不适⽤于⽣产环境。⾃PHP 5.3之后,升级的风险和改动都会⼤⼤降低。
下⾯是麦⼦同学整理的⽂章
⼤家在选择PHP版本时⼀定很困惑,有这么多版本究竟选那个呢?
问题:
我们现在新买了个服务器,⽤的是windows server 2008 r2。配置php 5.4的环境。
但我们之前开发的⽤2003,php是⽤5.2版本的,移植到新服务器,程序运⾏会有影响吗?或者我还需要注意那些问题?
API版本
PHP采⽤⼤版本向下兼容的升级⽅式,也就是说5.5兼容5.1-5.4,话虽如此,实际上兼容性并不乐观,⼤家也不要指望PHP官⽅会给出什么好的解决办法。现在2013年9⽉,版本有5.2.17 5.3.27 5.4.17 5.5.3
5.2.17
这⼀版本可以说是⽀持最⼴泛的版本了,现在还有绝⼤部分开源软件使⽤该版本,例如Drupal7.23,Joomla2.5,国内绝⼤多数软件:dedecms5.7,discuzX3等等最新版还在⽀持5.2,如果没特别要求,安装这⼀版本是最省⼼省⼒的,但长远来看可能终要被抛弃。现在许许多多的主机商为了省⼈⼒成本也懒得去升级PHP版本,反正基本上都⽀持。(这⾥插⼀句,现在国内软件为了兼容更多的安装环境,可谓⽤⼼良苦,甚⾄PHP5.1也能⽀持( discuzX3 不⽀持),最难得的是性能竟然也没落后多少,能做到如些极致真⼼不容易!)Drupal6建议使⽤该版本。
php手机版下载5.3.28(推荐)
这个版本虽然名称上是5开头,但很多⼈认为是PHP6.0版本的开始,性能有所提升,⽽且因为许多API都发⽣了变化,对5.2的兼容不太好,虽然有⼀部分开源软件声称能兼容5.2-5.3,但问题好像也不少,许多索性就放弃5.2了,例如Joomla3只⽀持5.3以上。⽽对于Drupal7强烈建议使⽤该版本,⽀持相当好。⽽对于Drupal8也可以使⽤该版本,⽀持也相当不错。该版本使⽤范围⾮常⼴,在兼顾性能和兼容
性之间做出⼀个不错的平衡点。
5.4(轻轻推荐)
5.4基本上已经接近完整体了,现时⽐较完善,稳定性和性能也不错,未来升级的重点版本,Drupal7.X对其⽀持尚可,但第三⽅模块还不太完美。如果懒得以后升级,可以⼀步到位安装该版本。
5.5
从5.3开始,以后版本基本上都是主打性能上的提升,函数什么的都能向后兼容。5.5开始好像有了64位版本,性能更加强劲,我没试过,不敢发表⾔论。
总结
如果开源软件说建议安装PHP5.3,那你就⽼⽼实实⽤5.3,别⽤5.5什么的,你可能认为反正都能兼容,性能可能更好,为什么不⽤新的呢?话是这么说,但你知道开源软件在开发的时候⼀般都是在特定的环境开发,就算兼容再好也会有想不到的意外(再强⼤的队伍也不可能对所有函数API进⾏兼容测试,那是相当可怕的⼯作量!),它只会在特定的环境下进⾏测试和优化,⽽且就算知道兼容有问题,团队
也不会去为了兼容更⾼版本去修改,不是他们死板,⽽是为了安全和稳定来考虑的。在开源氛围下,我们应该有个意识就是“够⽤就是最好”,⽽不是“最新是最好”。举个列⼦,Joomla3.1在5.4-5.5都运⾏不良,甚⾄安装不能成功。但Drupal却在5.5.3下也运⾏正常(本机),我想是个别案例吧?但好像运⾏中出现过意料之外的错误,不知道是不是版本的问题,希望不是。
None-thread-safe or thread-safe
Apache ⼀般选 none-thread-safe,IIS选后者(FAST-CGI),我就不解释了,信哥就没错。
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,⾮线程安全)的版本能够更好的提⾼效率。
64位和32位
你的系统是64位就选64位,是32位就选32位,不解释,信哥。
未来
说实话,未来是属于那些使⽤PHP5.4及以上的⼈。保持升级,定期跟踪语⾔的新特性和进展是我们⽇常⼯作的⼀部分。如果您已经落后了,那么我强烈建议您开始做升级计划,升级到⼀个⽐较新的版本。努⼒是值得的,毕竟程序是长年累⽉运⾏的。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论