PHP开发中更有效的dev/test/prod环境设置是什么。。?

PHP开发中更有效的dev/test/prod环境设置是什么。。?,php,Php,不幸的是,我从来没有高级开发人员或导师向我展示一些最佳实践。因此,我使用WAMP在Windows机器上开发站点(php/mysql),在生产服务器上的隐藏(密码限制)文件夹中进行测试,最后将站点移动到生产文件夹 我希望有一个更流畅/实用/防错的设置,这样从开发>测试>生产,就不会出现问题 重点/问题是(你可能会提出更多): 易用性 现场上线后易于开发/测试修改(避免在生产现场进行测试) 本地/测试/产品之间没有服务器差异(错误报告、apache设置等) 避免DB差异的问题(例如:如果添加了列,

不幸的是,我从来没有高级开发人员或导师向我展示一些最佳实践。因此,我使用WAMP在Windows机器上开发站点(php/mysql),在生产服务器上的隐藏(密码限制)文件夹中进行测试,最后将站点移动到生产文件夹

我希望有一个更流畅/实用/防错的设置,这样从开发>测试>生产,就不会出现问题

重点/问题是(你可能会提出更多):

  • 易用性
  • 现场上线后易于开发/测试修改(避免在生产现场进行测试)
  • 本地/测试/产品之间没有服务器差异(错误报告、apache设置等)
  • 避免DB差异的问题(例如:如果添加了列,如何将它们添加到prod DB.?)
  • 您是跳过测试环境还是在同一环境上进行开发和测试
  • 等等
你们是如何开发PHP/MySQL网站的

你使用SVN吗。?你使用IDE吗。?你使用虚拟机吗


谢谢。

我的开发过程仍然有点粗糙,我也期待着答案


对于大型项目,我要做的是在linux桌面和windows桌面上设置git repo。如果可能的话,我会在本地测试。组件完成后,我将把我的更改推送到集中托管的git repo(通常是私有git hub帐户),或者将它们拉到dev(我将dev设置为repo,并从ssh拉)。所有MySQL更新都存储在更新文件中,我使用netbeans进行开发(尽管我使用过eclipse和其他版本,但netbeans只适合我)。

以下是我的建议:

  • 拥有一个纯粹用于开发的开发环境。根据您可支配的资源,保持一个临时和/或实时环境。登台环境是您测试并确保应用程序没有严重问题的地方。实时环境基本上就是您的生产设置。事实上,staging和live应该始终是相同的。在登台上重现问题并在不修改代码的情况下进行一些故障排除非常有用。请记住,这也适用于任何相关数据库

  • 使用SVN或某种形式的版本控制。这样,如果有一天世界分崩离析,您将能够退回到应用程序的任何稳定版本

  • 如果您使用的是Linux环境,则可以编写简单的脚本,将安装程序与最新(稳定)的开发环境同步。理想情况下,您进行开发并进行单元测试,以确保一切按照设计进行。运行脚本,登台环境将使用最新的代码库进行更新。对舞台进行功能测试,确保一切按照规范进行。运行另一个脚本,您的最新更改将移动到实时/生产环境中


这是一个常见的问题——这就是为什么大多数经验丰富的开发人员都不回答这个问题的原因——并且通常会以激烈的意见而结束一场激烈的战争。所以,小心点

但你似乎是一个好人,想要走上正确的道路,寻找一些真正有成效的道路。几年前,我在这件事上认识到了一些我自己

好的,首先要记住的是:在任何事情上都不要盲目跟随任何人。任何人都可以声称自己是一位大师,但你可以发现至少有10000人比他好得多,而且完全匿名。因此,对于你听到的任何事情,请做以下操作:倾听、测试并得出自己的结论。如果只有一条金科玉律,那就是它。在你得出结论之前,其他一切都是糟糕的。你是你的终审法官

话虽如此,让我从一个最新的问题开始:IDE。你应该用什么?你应该使用一个你可以生产更多,让你更舒适的。Netbeans、Eclipse、VIM、Notepad++、Notepad、gedit、kate、quanta plus。。。。你有很多选择,每个人都有自己的观点。测试你认为有趣的东西,然后选择你喜欢的

任何方法、框架或工具都是如此。使用、学习并接受批评。坚持使用能让你更舒适、更有效率的产品

开发环境也是如此。如果您在Windows、Mac或Linux上开发,这并不重要。重要的是获得你需要的可用资源。您所需要的资源通常可以从一个项目更改到另一个项目

因此,开发某个项目的最佳环境是反映实际生产环境的环境。如果您使用PHP5.3OOP资源进行开发,最后使用PHP5.1,会怎么样?这就是重点。最后一个环境是谁告诉你什么是最好的开发环境,而不是相反

对于测试,您应该跟踪策略。我是作为IBM内部5年的测试团队负责人来谈论这一点的。这是因为您可以执行很多测试,但并不是所有测试都对当前项目真正感兴趣

首先,根据项目需要,决定要测试什么。安全性、性能、UI显示、UI效果、错误处理、负载和平衡、可用性、可访问性

记下你要测试的内容(什么、何时、何地、成功标准),并报告成功与失败

正如我之前所说,项目需要的是指导你每一步的东西。测试也不例外。如果您只需要检查不同浏览器上的显示,请随意使用不同的计算机或VM

一般来说,这就足够了。但是如果项目需要性能或负载测试,那么您将需要特定的负载测试软件。我不会深入讨论这个问题,因为它涉及面很广

找到一个理想的流程和工具匹配需要一些时间,在实现这一点之后,您将始终发现一个新的工具t