2013-12-10 71 views
8

我不是一個PHP開發人員,但我必須使用它,而且我並不真正瞭解如何在會話期間處理內存分配問題。什麼時候應該關閉PHP中的數據庫連接?

我工作的那個要求的HTTP認證,一旦你登錄,你可以通過一個漂亮的界面處理數據的應用程序。
有人在另一篇文章中告訴我,每次執行後都不應該關閉mysql數據連接,但我不知道在使用這個應用程序時這種連接保持的是內存,因爲在服務器端我不知道PHP是什麼保持記憶或不記憶。

所以我的問題是我應該使用一個單身連接到數據庫並從不關閉它(因爲我永遠不會知道應用程序何時未被使用或者我應該站在我今天所做的事情上:打開連接 - >執行語句 - >關閉連接

PS:我使用的mysqli

編輯1
我的應用程序的設計,MVC模式意味着:

|''''''''''|  |'''''''''''''|  |''''''''''''''| 
| view.php | ==> | control.php | ==> | database.php | 
|----------|  |_____________|  |______________| 

這種模式允許該視圖與只通過control.php數據,然後調用從database.php中的功能SELECTEDIT數據進行交互。你給我的解釋,我應該把:

public function __destruct(){ 
    mysql_close($this->connection); 
} 

database.php,但頁面加載時,有必要選擇或修改數據,所以它是一個很短的時間纔會執行,這意味着它仍然會密切請求結束時的連接。

它給出了我應該在哪裏把你提供的代碼和平更精確的問題,或做我的模式相關的PHP?

+0

這是你的類的析構函數執行數據庫管理,請參閱:http://stackoverflow.com/questions/2129162/how-do-you-efficiently-connect-to-mysql -in-php-without-re-every-que-on-every-que –

+0

這是因爲在MVC模式中CONTROL控制VIEW和MODEL(數據庫)。在您的方案中,VIEW控制CONTROL和MODEL。如果你用正確的方式編碼你的MVC,問題將自動解決 –

+0

這裏的問題是,我沒有用對象編碼,因爲我不知道該怎麼做,也沒有時間轉換應用程序,有時間瞭解它是如何工作的。 – Kiwy

回答

7

切勿爲每個查詢創建新的連接;您甚至不必手動關閉它。

只需創建你網頁的開頭

看看連接:How do you efficiently connect to mysql in php without reconnecting on every query

您可以使用此:

public function __destruct() 
{ 
    mysql_close($this->connection); 
} 

當頁面被關閉

它會被稱爲
+0

但是不關閉連接可能導致內存泄漏不? – Kiwy

+0

當頁面關閉時,您可以關閉連接,請參閱我的帖子編輯 –

+1

我想回答此問題+1 – Loko

2

來自PHP的Mysqli documentation

客戶端進程和數據庫之間的連接可以被客戶端進程重用,而不是被多次創建和銷燬。這減少了開銷...

相關問題