2010-09-02 48 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未來,所以我們 不需要數據庫抽象。

這正是你應該尋找的......不可預測的未來。

您真正需要定義的是您的應用程序有多靈活......真的需要更加靈活。如果設計正確,遷移或者昂貴就不那麼困難。如果真的是那麼困難/昂貴,那麼現在是時候做出改變並做一些重新考慮的時候了。這樣,當系統需要移動到一個新的更快的數據庫平臺,或更新或改進;這種變化更多的是「拖放式」替代,而不是完全重寫。