PDO には close 関数がないことに気付きました。接続を閉じる必要がありますか、それとも PDO には不要ですか?
3 に答える
データベースへの接続が成功すると、PDO クラスのインスタンスがスクリプトに返されます。接続は、その PDO オブジェクトの存続期間中アクティブなままです。接続を閉じるには、オブジェクトへの残りのすべての参照が削除されることを確認して、オブジェクトを破棄する必要があります。これは、オブジェクトを保持する変数に NULL を割り当てることによって行います。これを明示的に行わないと、スクリプトの終了時に PHP が自動的に接続を閉じます。
http://php.net/manual/en/pdo.connections.php
なんらかの理由でスクリプトの実行中に明示的に接続を閉じる必要がない限り、何もする必要はありません。その場合は、PDO オブジェクトを null に設定するだけです。
この質問は、プロジェクトの種類と接続の種類によって少し異なります。
ほとんどすべてのプロジェクトで、手動で接続を閉じることはありません。PHP では、接続は (永続的な接続でない限り) 要求の間のみ開かれます。したがって、手動で閉じるのはとにかく役に立ちません。
永続的な接続がない私のプロジェクトを見ると、接続をいつ手動で閉じるかを知るのは非常に困難でした。プロジェクトがいくつかのファイルよりも大きくなると (そして、個々のコンポーネントが本来あるべきように互いを認識できなくなると)、いつ接続が必要になるかを知ることが非常に難しくなります。
また、必要に応じて接続を再度開くと、リクエスト中に接続を開いたままにしておくよりもはるかにコストがかかります。
ただし、永続的な接続を使用している場合、手動で接続を閉じたい場合があります。
あなたの質問に答えるには:
PDO には close 関数がないことに気付きました。
オブジェクト参照 (およびオブジェクトへのすべての参照) を無効にして、PHP で接続を手動で閉じることができます。
接続を閉じる必要がありますか、それとも PDO には不要ですか?
ほとんどの場合、必要ありません。
PDOの接続ページから
データベースへの接続が成功すると、PDO クラスのインスタンスがスクリプトに返されます。接続は、その PDO オブジェクトの存続期間中アクティブなままです。接続を閉じるには、オブジェクトへの残りのすべての参照が削除されることを確認して、オブジェクトを破棄する必要があります。これは、オブジェクトを保持する変数に NULL を割り当てることによって行います。
これを明示的に行わないと、スクリプトの終了時に PHP が自動的に接続を閉じます。
編集
私はむしろ永続的な接続を使用したいと思います。ただし、スクリプトの最後ですべての接続を閉じることをお勧めします。