2013-06-22 38 views
1

我在我的php應用程序中設置了一個數據庫類,並計劃使用PDO或MySQLi。 我正在考慮持續性連接,但我想知道這是否是最好的主意。我看到,與PDO不同,MySQLi自動重置與mysqli_change_user()的連接狀態。使用mysqli_change_user還是不行?

但是,它指出mysqli_change_user()功能很貴,可能會降低性能,但您也可以禁用它。

我現在有兩個問題:

  • 是持續性的連接是個好主意?如果是這樣,用PDO或MySQLi?
  • mysqli_change_user()函數是否如此昂貴,以至於使用持久連接的性能增加無效?如果是這樣,如果你寫了適當的代碼,禁用它是不是一個好主意?

回答

2

持久連接是一個好主意嗎?

是的,一般來說。除了您不應該使用的廉價共享主機之外。

如果是這樣,與PDO或MySQLi的?

如果你想改變用戶 - mysqli是唯一的選擇。如果沒有 - 這是無關緊要的。

mysqli_change_user()函數是否如此昂貴以至於無法使用持久連接的性能提升?

我的常識告訴我,事實並非如此。

如果是這樣,如果您已經編寫了正確的代碼,禁用它是否是一個壞主意?

就個人而言,我不會理會的。

性能問題存在一個問題。其中有些是真實的,但有些只是虛構的,從無處取走。一件奇怪的事情 - 後者給開發者留下了深刻的印象。它總是讓我懷疑,花費多少時間和精力來解決在現場應用程序中沒有人注意或測量過的問題。

我建議的是描述你現有的應用程序(如果有的話),我敢打賭100:1你會發現你的代碼中有幾個地方對性能的影響比這個想象中的花費高出1000倍。

所以,我會保留它。

+0

謝謝您的詳盡答案。我懷疑它不會大幅降低性能,但我想確保。我會堅持使用'mysqli_change_user()'我想。 –

1

持久連接通常已知實際上得性能具有不利影響。我們在高流量網站上遇到了很多麻煩。

+0

這很有趣,你會認爲它會提高性能。 –

+0

它只是需要從另一方調整。 –

+1

打開tcp套接字非常便宜。通過持久連接,實際上需要爲webserver/php進程的每個分支保持一個連接。我們的許多頁面只在第一次查詢時纔打開數據庫連接,並且許多事情都被緩存到有時根本沒有查詢的程度。 因此,運行200-300個進程的數據庫意味着300個打開的數據庫連接。 – Evert