2010-09-02 50 views
4

如果这个问题是重复的,我很抱歉。我已经阅读manyothermysqliquestions首先,但没有一个看起来是完全重复的。mysqli授权重写大型工作系统的好处吗?

我是我公司一直从事4年以上项目的高级开发人员。这是一个庞大的PHP MVC框架系统,包含CMS系统模块,电子商务系统等。总共我们正在讨论1583个文件和〜407,912行代码(不包括评论和空白行)。

该系统使用我们从头开始构建的一个适合活动记录的系统,它几乎用于系统的每个模块。它是使用旧的PHP mysql函数构建的,而不是新的mysqli函数或PDO。 PDO有点矫枉过正,因为作为一家SaaS公司,我们控制着基础架构,我们将在可预见的将来使用MySQL,所以我们不需要数据库抽象。但在这里的答案以及PHP文档已经用强壮的语言关于MySQL的VS的mysqli:

http://ca3.php.net/manual/en/mysqli.overview.php

注意

如果你正在使用MySQL版本4.1。 3 或更高版本,强烈建议使用 ,而不是使用mysqli扩展 。

由于我们使用的是旧的mysql函数,因此我们全面检查了新代码以检查SQL注入错误。它由我们的工作人员审查,所以有可能我们错过了一些东西,但我相信我们已经被覆盖了。由于系统在代码中使用了mysql函数,所以新代码必须遵循该约定;我们不能迁移到mysqli,因为我们去...

重写整个系统使用mysqli代替有没有好处?或者更好地问,这个好处是否值得相当大的成本?或者,当我们进行重大修改时(在下一个主要版本中),我们应该考虑这一点吗?我的心态是,如果它没有损坏,不要修复它......但我只是固执?

+0

哦,等等,那个文件/行数包括JavaScript代码。当我弄清楚如何排除.js文件时,请耐心等待...... – Josh 2010-09-02 14:22:28

+2

您不应该重写所有内容。你说你开发了一个*“专有活动记录系统”*,所以这应该是唯一需要改变的东西,因为通过适当的设计,你所有的代码都不应该直接使用'mysql'。相反,它应该调用AR-System的函数 – jigfox 2010-09-02 14:25:56

+0

@jigfox:它与Ruby的ActiveRecord系统类似,可以根据SQL WHERE子句或整个SQL语句进行选择。因此,所有模块中的所有语句都需要重写以使用Prepared Statements ... – Josh 2010-09-02 14:28:48

回答

1

我不知道是否值得更改。我会认真考虑改变你的下一个主要修订。

虽然 - 你可能最好移动到数据库抽象层,所以如果你改变了(或者他们用mysql_super_duper()函数出来),你不必重新访问你的整个代码 - 只是抽象码。

+1

我一直在等待'mysql_super_duper()'太久了! :-)认真地说,我认为你是对的,如果当我们重写时,我会添加抽象,这样在未来的这些变化会更容易。 – Josh 2010-09-02 14:47:23

1

PDO是有点大材小用,因为作为一个SaaS的 公司,我们控制 基础设施,我们将使用MySQL的 为forseable未来,所以我们 不需要数据库抽象。

这正是你应该寻找的......不可预测的未来。

您真正需要定义的是您的应用程序有多灵活......真的需要更加灵活。如果设计正确,迁移或者昂贵就不那么困难。如果真的是那么困难/昂贵,那么现在是时候做出改变并做一些重新考虑的时候了。这样,当系统需要移动到一个新的更快的数据库平台,或更新或改进;这种变化更多的是“拖放式”替代,而不是完全重写。