【发布时间】:2011-05-15 22:20:43
【问题描述】:
我有一个包含大约 50-55 个代码文件的 php 应用程序。代码量最大的文件大约有 1200 行代码(包括空格、制表符和多个换行符...),其余代码文件相对较小。
几乎每个文件中的应用程序代码都是 html、sql 和 php(你称之为意大利面条)的混合体,除了少数纯 php 包含文件的文件......例如包含所需函数的文件在许多其他地方。
我一直在考虑将这个应用程序重构为 mvc 类型的架构是否是个好主意。
现在我知道 mvc 应用程序提供了许多优点,例如易于维护、重用和易于进一步开发等,但可伸缩性和性能呢?特别是在这种情况下?
我的假设是,由于这是一个小型应用程序(我相信如此,你认为它足够小吗?),我不认为维护或添加更多功能(最多)不会有困难只是可能意味着在现有文件中添加一些内容,或者说最多添加 5-10 个新文件。
所以我认为我不应该仅仅为了维护而转换为 mvc。
据我了解,您可以将 mvc 的每个组件放在单独的服务器上以分散负载,以便让不同的服务器为 html、数据库和逻辑提供服务,并进一步进行其他优化/缓存以提高效率mvc 应用程序规模和性能。
我认为即使在一个小型意大利面条应用程序中,我们不能为 html、数据库等设置不同的服务器,但我们可以通过在 Web 服务器、数据库服务器等前面安装负载平衡器来轻松扩展而不会降低性能。(假设它涉及一台服务器不够用的情况)
更重要的是它自己的意大利面条代码应该比 mvc 执行得更好,因为它没有任何开销,例如需要包含或文件或从属于 mvc 不同组件的文件夹下的文件调用函数。
那么,考虑到所有这些因素,您真的认为将一个相对较小的意大利面条式应用程序重构为 mvc 以提高可扩展性和性能是否有用?
请不要告诉我重构将来会有用(我知道这会有所帮助,并且会考虑我们是否真的需要向现有代码库添加更多代码)但请给我一个明确的答案
1)我真的需要将此应用程序转换为 mvc 架构以获得可扩展性和性能吗?
2) 像这样的意大利面条式应用程序是否可以扩展并执行每天至少 100 万个请求,其中一半发生在某个高峰时间?
【问题讨论】:
-
常用框架实际实现的称为“PMVC”,它不允许将组件分布到不同的服务器上。此外,您应该首先将代码库从意大利面条(全局范围)代码转换为适当的过程结构(这是不同的)。将 SQL 处理从输出和处理逻辑中分离出来,然后再尝试将假设的模式硬塞到它上面。
-
嗯...可能不是不同的服务器,但我无法理解您的其余信息...我不像您那样是技术大师 :)
-
优化 PHP 的性能毫无意义。当它真正成为一个问题时,一些简单的缓存将比您在 PHP 级别上所做的任何优化产生无限多的效果。您唯一应该担心的(直到您达到 Facebook 或 Twitter 的规模)是您的代码的可维护性。安全性、稳定性和易于调试都比性能更重要,而所有这些都与代码的可维护性密切相关。
标签: php performance architecture coding-style scalability