2013-12-10 6 views
8

私はPHP開発者のようなものではありませんが、私はそれを使用する必要があります。セッション中にPHPがメモリ割り当てをどのように処理するかは実際にはわかりません。PHPでデータベース接続をいつ閉じるべきですか?

私は、ログインしてすぐに素敵なインターフェイスでデータを操作できる、HTTP認証を求めるアプリケーションに取り組んでいます。
誰かが別の投稿で教えてくれました。実行するたびにmysqlデータ接続を閉じるべきではありませんが、このアプリケーションを使用している間にこの接続がどのようにメモリに残っているのか分かりません。記憶に残っているかどうか。

私の質問は、データベースに接続して決して閉じないでください(アプリケーションが使用されていないことを決して知らないので、 >実行声明 - >近い接続

PS:私はmysqliの

編集1使用しています:

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

を 私のアプリケーションは、MVCパターンの意味を持つデザインです。

このパターンでは、control.phpを介してのみビューとデータのやりとりを行い、database.phpからSELECTまたはEDITデータに関数を呼び出します。 database.php内部

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

を、しかし、そのページには、データを選択するか、変更する必要があるとき、負荷であるので、それは短時間だけ実行されます、それはまだ近くになります意味:あなたは私を与える説明を、私は入れなければなりません要求の終わりの接続。

これは、あなたが提供するコードの平易さをどこに置くべきか、または私のパターンがPHPに関連するかどうかをより正確に質問します。

+0

これはデータベース管理を実行するクラスのデストラクタです:http://stackoverflow.com/questions/2129162/how-do-you-efficiently-connect-to-mysql -in-php-without-reconnecting-on-que –

+0

これは、MVCパターンのCONTROLがVIEWとMODEL(データベース)を制御するためです。あなたのスキームでは、VIEWはCONTROLとMODELを制御します。MVCをコード化すれば、問題は自動的に解決されます –

+0

そしてここに問題があります。私はオブジェクトを使ってコードを作成しません。実際の方法は分かりませんし、アプリケーションを変換する時間もありませんどのように動作するかを学ぶ時間。 – Kiwy

答えて

7

クエリごとに新しい接続を作成しないでください。あなたは手動でそれを閉じる必要はありません。

だけを見ていますページの先頭

で接続を作成します。ページが

閉じているときに、それが呼び出されます

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

:あなたはこれを使用することができますHow do you efficiently connect to mysql in php without reconnecting on every query

+0

しかし、接続を閉じないとメモリリークが発生する可能性はありますか? – Kiwy

+0

ページが閉じたときに接続を閉じることができます。投稿の編集を参照してください。 –

+1

私はこの+1に回答したかったです。 – Loko

2

PHPのMysqliよりdocumentation

クライアントプロセスとデータベースの間の接続は、複数回作成および破棄されるのではなく、クライアントプロセスによって再利用できます。これにより、オーバーヘッドが削減されます。

関連する問題