多个数据库查看单个php代码库问题?

多个数据库查看单个php代码库问题?,php,performance,codebase,Php,Performance,Codebase,我正在用php做一个解决方案,并且正在考虑为不同的客户机进行多个安装。如果我有20个数据库,那么将它们指向同一个php代码库有什么问题吗?速度问题,还是不好的做法 提前感谢您的想法和专业知识:-)这是可能的,不会影响您的表现,但也有缺点 如果您有一个代码库,这意味着您必须在更新它时重新检查所有客户端是否存在错误。 因此,您的客户机最好将代码库分开,这样您就可以更新特定客户机的代码库,并防止在其他客户机上出错 如果对于一个客户机来说似乎一切正常,您可以为另一个客户考虑相同的更新。 如果每个客户端都

我正在用php做一个解决方案,并且正在考虑为不同的客户机进行多个安装。如果我有20个数据库,那么将它们指向同一个php代码库有什么问题吗?速度问题,还是不好的做法


提前感谢您的想法和专业知识:-)

这是可能的,不会影响您的表现,但也有缺点

如果您有一个代码库,这意味着您必须在更新它时重新检查所有客户端是否存在错误。 因此,您的客户机最好将代码库分开,这样您就可以更新特定客户机的代码库,并防止在其他客户机上出错

如果对于一个客户机来说似乎一切正常,您可以为另一个客户考虑相同的更新。

如果每个客户端都有自定义代码,如果它是一个像邮件管理系统这样的应用程序,则会出现这种情况
这绝对不是一个坏习惯

如果您为每个客户机分配了一个版本号,那就太好了。
这使得在单个客户机上测试新版本成为可能,并将其他客户机缓慢迁移到较新版本。这是可能的,不会影响您的性能,但它有一个缺点

如果您有一个代码库,这意味着您必须在更新它时重新检查所有客户端是否存在错误。 因此,您的客户机最好将代码库分开,这样您就可以更新特定客户机的代码库,并防止在其他客户机上出错

如果对于一个客户机来说似乎一切正常,您可以为另一个客户考虑相同的更新。

如果每个客户端都有自定义代码,如果它是一个像邮件管理系统这样的应用程序,则会出现这种情况
这绝对不是一个坏习惯

如果您为每个客户机分配了一个版本号,那就太好了。
这使得在单个客户机上测试新版本成为可能,并慢慢地将其他客户机迁移到较新的版本

我认为与Visser相反。如果一个安装中存在bug,那么所有安装中都会存在相同的bug,除非您提供软件的自定义版本。当然,不同的客户可能以不同的方式使用应用程序,因此有些客户可能永远不会遇到导致另一客户的业务陷入瘫痪的缺陷。因此,我再次不同意Viseer的观点,即它不会影响性能——对于特定客户,使用上的差异可能会导致总体性能上的显著差异,但在PHP层进行调优将使所有客户受益。在数据库层进行调优是一个稍有不同的故事——一些客户可能会从一个会减慢其他客户速度的索引中获益

如果您确实在代码的行为中提供了每个客户的变体,那么如何做到这一点取决于这些变体的复杂性。理想情况下,应在数据库中描述差异,然后相同的PHP代码将产生不同的结果-例如,一个客户想要一个独立的用户管理和身份验证系统,另一个客户想要使用LDAP身份验证,第三个OpenID——在这种情况下,您的代码应该实现所有3个和基于数据在运行时选择的方法


有时(但很少)实现这种方法是不实际的,为不同的安装使用不同的应用程序逻辑是解决方案。在这种情况下,正确的方法是在版本控制系统中维护fork。一个例子是网站上的不同品牌-除非你是在内容管理系统上开发,否则使用不同的CSS文件可能更简单(我很难想出一个不同PHP代码的例子)。

我会说与Visser相反。如果一个安装中存在bug,那么所有安装中都会存在相同的bug,除非您提供软件的自定义版本。当然,不同的客户可能以不同的方式使用应用程序,因此有些客户可能永远不会遇到导致另一客户的业务陷入瘫痪的缺陷。因此,我再次不同意Viseer的观点,即它不会影响性能——对于特定客户,使用上的差异可能会导致总体性能上的显著差异,但在PHP层进行调优将使所有客户受益。在数据库层进行调优是一个稍有不同的故事——一些客户可能会从一个会减慢其他客户速度的索引中获益

如果您确实在代码的行为中提供了每个客户的变体,那么如何做到这一点取决于这些变体的复杂性。理想情况下,应在数据库中描述差异,然后相同的PHP代码将产生不同的结果-例如,一个客户想要一个独立的用户管理和身份验证系统,另一个客户想要使用LDAP身份验证,第三个OpenID——在这种情况下,您的代码应该实现所有3个和基于数据在运行时选择的方法


有时(但很少)实现这种方法是不实际的,为不同的安装使用不同的应用程序逻辑是解决方案。在这种情况下,正确的方法是在版本控制系统中维护fork。一个例子是网站上的不同品牌-除非您是在内容管理系统上开发的,否则使用不同的CSS文件可能更简单(我很难想出一个不同PHP代码的例子)。

谢谢。版本控制的想法是一个伟大的想法!谢谢版本控制的想法是一个伟大的想法!我也同意你的评论。我认为我的解决方案比你描述的解决方案简单。所有安装都有相同的用途,它们之间的用途没有差异,只是有些可能无法访问代码的某些区域(模块)。数据库模式也应该是相同的。这会改变你的答案吗?如果一个insta中有一个bug