2011-10-18 25 views
0

我有網站使用數據庫,我已經實現單身模式連接到數據庫。單身人士爲我的網站工作

但是我的網站使用了大量的Iframe或內部頁面,這些頁面又在每個頁面中使用單例模式連接到數據庫。

我有幾個問題需要澄清 1)如果用戶A訪問網站,他瀏覽了10頁,對所有頁面是否只創建一個連接,或者每個頁面創建一個連接?

2)對於所有的DB連接,子頁面中的amde將使用相同的連接還是新的連接?

3)當用戶從網站上存在時,如何關閉DB連接? 我覺得很棘手的關閉數據庫連接,假設在我的index.php中,如果它有menu.php,stats.php和profile.php,我無法確定何時關閉連接? 關閉連接的最佳實踐是什麼?

網站建立在PHP和MYSQL數據庫上。

回答

1

如果您使用單例,則每個請求都會建立一次連接。

  • 對於每10頁。
  • 如果您通過iframe包含您的子頁面,那麼您將爲每個子頁面打開一個新的連接。
  • 一種選擇是在您的網頁(前端控制器)上有一個入口點,然後在請求處理後關閉連接。如果您在您的index.php文件中包含您的php頁面,請在include/require聲明後關閉連接。
+2

[對,這就是爲什麼Singletons在PHP中並不像人們想象的那樣唯一](http:// stackoverflow。COM /問題/ 4595964 /誰-需要-單身/ 4596323#4596323) – Gordon

+0

以上是示例代碼已放置在我的網站www.cricandcric.com的所有頁面中,並且根據您的建議,是否需要在需要後放置關閉連接語句 – gmhk

+0

在包含「要求'陳述。 – mAu

0

一些開發人員認爲在他們的頁面末尾要求關閉連接是一種很好的做法。其中一些人也花費時間在腳本的末尾釋放變量和數組。對我來說這是浪費字節。只是因爲它們是良好的編碼習慣才能做事情是可以的,但在我看來,我們應該瞄準快速加載網頁和有效利用數據庫交換數據(往返)。事實是,當你關閉一個php腳本或導航到另一個頁面時,除非這兩個頁面都使用php會話,否則之前的頁面及其上的所有內容都將死亡。它不再存在和PHP轉儲它。

一旦發生這種情況,沒有辦法檢索任何信息,因爲它真的被殺死了。 至於數據庫連接,它們自己關閉。

腳本執行結束後,服務器的鏈接將立即關閉,除非通過明確調用mysql_close()來關閉它。這在mysql_connect()下的手冊中說明;

再一次,有些人喜歡在他們的腳本末尾放一行代碼,調用mysql_close($ DB),但記得浪費字節的東西?

如果它已經完成,請留下它。只是我的2美分價值。

+1

我不同意你的看法:由於無論如何都會關閉連接,因此明確調用close函數是非常浪費的:實際上只需一行代碼即可執行。所以實際上只是構成代碼文本的實際字節,甚至不包括組成函數調用的字節。這是最小的。它甚至不是帶寬;服務器硬盤上只有十幾個字節。如果你對於字節來說很難,那麼你需要一個更大的磁盤。此外,並非所有事情都會自動關閉。 MySQL中的MySQL連接,當然,你是安全的;但有一天這種態度會咬你。 – Spudley