2017-03-13 3 views
-1

私は、データベースのクエリや準備文などの大部分を扱う次のクラスを持っています。以下は、私が持っているクラスのサンプルです。私のクラスで私のDB接続を閉じるべきとき

ペソ(database.phpで)私は、データベースへの私の接続を閉じて行くべきか

class Database{ 

public $mysqli; 


    function __construct(){ 
    // Open the connection to the DB on construct 
    $this->open_connection(); 
    } 

    private function open_connection(){ 
    $this->mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASS, DB_NAME); 
    if(mysqli_connect_errno()){ 
     die("Database connection failed: " . mysqli_connect_error() . " (" . mysqli_connect_errno() . ") "); 
    } 
    } 

    /* 
    * Creates a user 
    */ 
    public function create_user($username, $password){ 
    $stmt = $this->mysqli->prepare("INSERT INTO Users(username,password,dateCreated) VALUES(?,?,NOW())"); 
    $password = $this->hash_password($password); 
    $stmt->bind_param("ss", $username, $password); 
    if(!$stmt->execute()) : 
     $error = "Execute failed: (" . $stmt->errno . ") " . $stmt->error; 
    endif; 
    $stmt->close(); 
    return $error; 
    } 

    // .... 
} 
$db = new Database(); 

私はそのクラス私は、そのファイルを必要としています、ページの読み込みのたびにインスタンス化していますので、?私はそれを開いたままにすることはできますか?

答えて

-1

スクリプトの実行が終了すると接続が切断されるため、開いたままにしておくことができます。 PHP website on mysqli_closeは、とにかく接続を閉じることをお勧めします理由について以下の情報を提供します。

オープンPHPスクリプトの実行が終了すると、MySQLの接続および結果セットが が自動的に破棄されている非永続。したがって、明示的に開いている接続を閉じて結果セットを解放している間は、 はオプションです。そうすることをお勧めします。これにより、すぐに リソースがPHPとMySQLに返され、パフォーマンスが向上します。関連する の情報については、freeing resources

+0

しかし、これは良いスタイルではありません。リソースが無駄になる – Psi

+0

とにかく接続を閉じることをお勧めします。 :) – Asperitas

+0

申し訳ありません、私はちょうど読んで: "あなたは開いておくことができますので..."。 – Psi

-1

を参照してください。できるだけ早く不要なリソースをすべて閉じます。あなたの次のページが要求されるまで、あなたのサーバーが特定のページを提供し終えるとすぐに終了するので、あなたはそれを開いたままにすることはできません。

別のページを参照する場合は、とにかく接続を再度開く必要があります。接続プールが便利な場所です:https://dev.mysql.com/doc/apis-php/en/apis-php-mysqlnd-mux.connection_pool.html

関連する問題