2011-09-13 5 views
1

私はこれに対する答えを見つけることができないようです。私は$ db = NULLを使用する必要があるPDO接続を閉じることを知っています。私はクラス内のデータベース接続にアクセスするために依存性注入を使用しています。私は$ db = NULLを使うべきですか?メソッドの内部で、または私はクエリを呼び出すページでそれを使用する必要がありますか?メソッド内または呼び出しページ上でPDOデータベース接続を終了する必要がありますか?

public function find_all() { 
    connect to $db; 
     //run query 
     $db = NULL; 
      return query 
} 

か、それはこのようにする必要があります:

ので、同じよう

$thing = Method::find_all(); 
//display results 
$thing = NULL; 

私は最初の方法を使用していた、とすべてのエラーを得ていないが、私は確認します私はそれを正しい方法でやっている。ありがとう。

答えて

1

あなたの依存性注入コンテナがデータベース接続のコピーを保持している可能性が高いので、unset($ db)または$ db = nullを使用して通常閉じますが、これは最後の参照である場合にのみ機能します。

また、どのページに対しても1つのクエリしか存在しないことがわかっている場合を除き、すべての「検索」方法でデータベース接続を開いたり閉じたりすることができます。

2番目の方法では空き領域が解放されますが、 '$ thing'がデータベース接続であるか、データベースへの最後の参照が含まれていないと、データベース接続も終了しません。

2

すべてのPHP接続は、スクリプトの終了時に自動的に閉じられます。しかし、不要なオブジェクトを手動で「破棄」するのは悪い習慣ではありません。

0

スクリプトの最後にすべての接続を閉じるのがよい習慣です。スクリプトで接続が大量になり、永続的な接続を使用する方がよい場合は、DBの接続が多すぎます開いた。

+1

これは、永続的データベース接続とは異なる情報です。 PHP Manual:http://php.net/manual/en/features.persistent-connections.phpを参照してください。 – Sonny

関連する問題