Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 建立高效的开发流程_Php_Mysql_Hudson - Fatal编程技术网

Php 建立高效的开发流程

Php 建立高效的开发流程,php,mysql,hudson,Php,Mysql,Hudson,我正在为我的初创公司设置开发环境(PHP/MySQL)。我们使用三组服务器: LIVE—提供实际应用程序的服务器 测试-在实际发布之前提供测试版本 DEV-开发服务器 开发服务器运行SVN,每个开发人员都签出本地副本。每天结束时,完成的修复都会被检入,然后我们使用Hudson自动化构建过程,然后将其转移到测试中。然后,我们使用测试仪检查应用程序是否仍然正常工作,如果一切正常,则将其移动到活动状态。我对这个过程很满意,但我有两个问题: 您会建议我们如何进行本地测试-当每个开发人员添加新页面或更改

我正在为我的初创公司设置开发环境(PHP/MySQL)。我们使用三组服务器:

LIVE—提供实际应用程序的服务器 测试-在实际发布之前提供测试版本 DEV-开发服务器

开发服务器运行SVN,每个开发人员都签出本地副本。每天结束时,完成的修复都会被检入,然后我们使用Hudson自动化构建过程,然后将其转移到测试中。然后,我们使用测试仪检查应用程序是否仍然正常工作,如果一切正常,则将其移动到活动状态。我对这个过程很满意,但我有两个问题:

  • 您会建议我们如何进行本地测试-当每个开发人员添加新页面或更改功能时,我希望他们能够测试他们正在做的事情。您是否只需要设置本地Apache和本地数据库,并让它们在自己的机器上进行本地测试

  • 您建议如何处理数据层更改

  • 为了使我们的开发过程尽可能的简单和高效,您还有什么建议吗


提前感谢每个运行自己的安装程序的开发人员,包括Apache和数据库

将数据库架构置于版本控制之下


可能您可以在测试数据库中保存(可能在单独的存储库中)一组小但具有代表性的数据。每天早上,您都会检查此测试数据库的最新副本,然后开始黑客攻击。当您更改模式时,相应地更新您的测试数据存储库。

任何进行开发的人都应该有自己的本地环境。我使用Mac,所以我运行MAMP,这样我就可以在本地拥有自己的LAMP环境,并且独立于任何其他环境。这也让我知道,没有其他人在更改/使用与我相同的组件,并消除了任何可能的混淆。如果您是windows用户,还可以轻松安装LAMP堆栈的本地版本,如XAMP等。如果您将Linux作为桌面运行,您很可能已经知道如何安装LAMP以适应您正在运行的Linux的风格

数据库模式版本是个好主意。这也是我们使用的。除了版本控制下的模式之外,我们还向模式中添加了一个模式版本表,并保持更新,以便在需要比较时,能够快速地告诉production/qa/dev中的版本

至于数据层的更改,我建议做两件事

  • 始终向前和向后创建迁移路径。这意味着,当您拥有要在生产环境中使用的模式以升级现有模式时,您应该始终将其作为发行版的一部分。更改表格的清晰简洁的过程。出于同样的原因,您还需要有一个正常工作且经过测试的回滚版本,以防出现问题

  • 我发现有帮助的是使用生产备份加载到本地(或QA/DEV)上,以便在不影响生产的情况下使用最新的数据/模式。如果您没有定期执行生产备份,那么现在可能是实施策略的好时机。那你就一石二鸟了。您将拥有任何停机的备份,以及一个有用的实时模式,其中包含可以加载到另一台机器上进行测试的数据。这也有助于提出模式更改的任何可能问题,因为数据将与生产相匹配。因此,如果它在本地(以及在DEV/QA上)工作,就可以降低生产中出现问题的风险


  • 如何在版本控制中保持数据库模式?听起来真是个好主意——我以前从未见过这样做。我写了一篇关于它的文章:你也可以在这里读到更多: