将50多个安装升级到PHP 5.3

Gra*_*per 11 php compatibility backwards-compatibility

作为网页设计师,我们在2011年有超过50个(不同的)cms和其他php 5.2驱动的应用程序.有些人也对核心进行了自定义.有人如何将这么多的应用程序升级到php 5.3?

php的开发人员有没有想过这个?很多(流行的)功能只是折旧,给像我们这样的人带来了很多工作.

我真的不知道如何最好地继续

ter*_*ško 11

简短的回答

这取决于.

迁移策略将受到源本身的质量和内容以及体系结构和工作流程的影响.没有"银弹"可以使它发挥作用.

更长的答案

应该怎么做

您自动升级所有临时站点,运行所有单元测试,如果它们全部通过 - 运行验收测试.修复出现的问题,直到您通过所有测试.然后让你的QA人员确保一切都是100%好的.整个过程主要由您的持续集成系统/框架运行.

当所有工作都在暂存环境中工作时,您将删除每个站点以进行维护,将更新的代码部署到生产环境,升级服务器的软件,并重新启动站点.

你将如何(最有可能)去做

由于您的软件都没有任何单元/验收测试,没有最新的规范,甚至没有持续集成系统的概念,您将不得不这么做:

'step 1' take a survey of different servers setups on which your projects 
         are deployed (if you have all project on single box with 
         virtual-hosts, you can skip this bit )
'step 2' find somewhere a computer, which can temporary act as local server
<foreach setup>

    'step 3' install/configure this temporary server to be exactly like 
             the "setup"
    <foreach project on that setup>

        'step 4' BACKUP ALL THE STUFF
        'step 5' copy the latest source and DB from the production server
        'step 6' upgrade the software
        'step 7' see what has *blown* up and fix what you can find    
        'step 8' pass to the QA team 
        'step 9' store the source

    </endforeach project>
    'step 10' take the server with this configuration down for maintenance
    'step 11' upgrade software on the server
    'step 12' deploy all the projects from this server 
    'step 13' prayer (optional)

<endforeach setup>
Run Code Online (Sandbox Code Playgroud)

这有点像"简短"的版本.基本上你必须逐个服务器,在本地克隆它,然后升级,修补项目.然后升级每个服务器并打开修补版本.并希望.

你应该升级吗?

客户不会为此付费.

由于你有大约50个不同的项目,你必须调查它是否值得花时间和金钱.经过这样的分析,您可能会发现,将大多数项目标记为"遗留"并将服务器升级到最新的5.2.x 对企业来说更有意义.然后不管它.

当然,即使您决定不升级大多数项目,也会有一些需要它.特别是正在进行的合同项目,为公司带来稳定的收入来源.

我建议开始升级那些现金牛项目,因为无论如何你都必须这样做.然后根据这种经验,您可以计算其余"投资组合"的成本.

那下一次怎么样?

PHP 5.4已经发布(在上次编辑时,5.5已经到来).到今年年底,大多数公司将面临一个问题:"是时候开始使用5.4了?" .一些更快,一些稍后.您使用的框架和CMS也倾向于获取更新.

一句话:整个公司应该开始研究简化这个过程的方法.

那么当你升级到PHP 5.5并且mysql_*函数开始显示E_DEPRECATE警告时呢?见红框内mysql_affected_rows()文档.这不是一次性的事情.

投资实施更好的部署策略(涉及单元测试和持续集成)可能是明智之举.


<rant>

php的开发人员有没有想过这个?许多(流行的)功能只是折旧,给像我们这样的人带来了很多工作.

已弃用的功能和功能已在文档中标记为多年.例如,ereg()自从我开始学习PHP以来,不应该使用通知和通过引用传递对象的通知.弃用警告会主要影响PHP4代码库(在这种情况下,您的问题有点不诚实).

我不知道社区多年来接受的强制执行是如何"造成大量工作"的.

</rant>