Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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_Apache_Development Environment - Fatal编程技术网

Php 小型团队的开发设置:处理资产

Php 小型团队的开发设置:处理资产,php,apache,development-environment,Php,Apache,Development Environment,我们是一个在局域网中开发PHP应用程序的小团队。在Mac和PC上 单个开发人员将源代码签出并编辑到自己的机器上,Apache正在该机器上运行。然后通过localhost完成本地测试 对于DB,应用程序连接到局域网中专用机器上的公共MySQL安装。这非常有效,因为我们很少对DB模式进行(破坏性的)更改。这意味着运行的所有单个应用程序都访问相同的测试数据 但是上传的文件仍然是一个问题:它们只上传到开发人员的本地机器上,尽管对它们的引用存储在中央数据库中。这意味着其他团队成员可能会看到用户上传图像的断

我们是一个在局域网中开发PHP应用程序的小团队。在Mac和PC上

单个开发人员将源代码签出并编辑到自己的机器上,Apache正在该机器上运行。然后通过
localhost
完成本地测试

对于DB,应用程序连接到局域网中专用机器上的公共MySQL安装。这非常有效,因为我们很少对DB模式进行(破坏性的)更改。这意味着运行的所有单个应用程序都访问相同的测试数据

但是上传的文件仍然是一个问题:它们只上传到开发人员的本地机器上,尽管对它们的引用存储在中央数据库中。这意味着其他团队成员可能会看到用户上传图像的断开链接,该图像实际上只存在于一台devs本地计算机上


理想的解决方案是将整个持久层放在中央机器上。关于如何最好地实现这一点,您有什么想法吗?

映射网络文件夹或使用dropbox或类似服务。本地数据库很好,不会占用太多资源。

映射网络文件夹或使用dropbox或类似服务。不过,本地数据库很好,不会占用太多资源。

基本上,您需要某种类型的共享文件系统。有很多选择:samba共享、NFS挂载目录、Dropbox(或类似的服务)等等。我建议查看可用的选项,看看什么最适合您的基础架构。

基本上您需要某种类型的共享文件系统。有很多选择:samba共享、NFS挂载目录、Dropbox(或类似服务)等等。我建议查看可用的选项,看看哪些最适合您的基础架构。

我曾经处理过这一问题,我所做的是将我们的NAS用作所有内容的存储。我们通过FTP在NAS本身上开发了我们的网站。就像云开发一样,IDE只在我们这边,我们编辑的每个文件、上传的图像等等都在NAS上。该网站本身也在NAS上运行(因为NAS具有服务器和mySQL的功能)

NAS已从网络存储转变为实际的本地服务器


根据我对你问题的理解,我认为你只需要共享上传的资源(如图片),而不是一次在同一个应用程序中开发

首先,我建议你根本不要在生产机器上开发

现在,您可以通过以下两种方式实现:

模块化开发

你独立发展。你们不能碰对方的密码。您可以分别开发功能。那样的话,你们就不会互相妨碍了。这也促进了“松散耦合”,用勒曼的话来说,“当一个功能中断时,另一个不会”

您应该了解如何将开发分解为“模块”。虽然这是在JS中实现的,但是架构仍然可以应用

版本控制开发

将您的开发分为3层:

  • 生产(又名稳定)是公开的代码。您不需要在这里开发或触摸代码。只有在对代码进行彻底测试后,才能发布代码。此外,这不是公共服务器。这只是公共代码。然而,这里居住的是公共站点的实际副本

  • 测试(又称Beta版)是测试开发代码的地方。该系统仅用于测试目的。你也不要碰这里的密码。你来这里只是为了自己找虫子。这是你的“质量保证层”。这一层也是代码合并的地方(稍后讨论)

  • 开发(又称Alpha)是您接触代码的地方。在这里,您可以共享代码、测试代码、破解代码、尝试新功能以及修复测试中发现的错误

正如您所见,您不会因为覆盖或断开链接等而中断系统

现在,你的发展战略。使用像GIT(分布式)或SVN(中央)这样的版本系统,并根据上面的分支创建3个分支。对于本例,它使用分布式方法(我更喜欢)

在您的团队中指定一名“维护人员/环主”,负责整合您的工作并将其发布到测试中。这个维护人员所做的是收集“完成的”开发代码并将其放入他的测试分支。然后,任何人都可以将他的测试分支克隆到您的测试分支来测试您的代码。无论他们/你发现什么bug,你都会在开发过程中进行改进并再次提交给他。只有在该特性得到质量保证之后,维护人员才能将其发布到stable,并将其克隆到公共服务器

完成所有这些之后,当您继续前进时,您只需将稳定分支克隆到您的开发分支,然后重新开始。现在您有了一个全新的画布,覆盖由版本控制系统和维护人员处理。你不必为此担心


至于资源,您不希望由于来自公共服务器的资源而使本地开发系统陷入困境。版本控制系统还具有“忽略列表”,以防止您克隆某些资源。只克隆必要的东西。如果您正在开发一个天气小部件,您只需要天气小部件的图像。您不需要来自其他小部件的图像(除非必要)

我曾经处理过这一问题,我所做的是使用我们的NAS作为所有内容的存储。我们通过FTP在NAS本身上开发了我们的网站。就像云开发一样,IDE只在我们这边,我们编辑的每个文件、上传的图像等等都在NAS上。该网站本身也在NAS上运行(因为NAS具有服务器和mySQL的功能)

NAS已从网络存储转变为实际的本地服务器


根据我对你问题的理解,我认为你