PHPコードからMySQL/SQLクエリを発行する場合は、最初にデータベースとの接続を確立する必要があります。
ユーザーのWebセッションの開始時、新しいページのロード時、またはすべてのMySQL / SQLクエリの前にのみ、データベースとの接続を確立する必要があるかどうかを教えてください。
データベースとの接続を不必要に何度も確立すると、不要なシステムリソースを消費してしまうと思います。したがって、必要最小限の時間でデータベースに接続することをお勧めします。
必要な場合は、常にデータベースに接続する必要があります。グーグルや他のボットが数秒であなたのアプリケーションにたくさんアクセスしていると想像してみてください。すべてのコンテンツがキャッシュシステムから配信される場合があります。
さらに、データベース接続を再度開くと、ユーザーを待機し、コンテキストの切り替えのためにより多くのメモリを消費するため、直接コストがかかります。スクリプトの実行が終了するとデータベース接続が自動的に終了するため、必要なときにデータベースに接続する必要があります。データベースを閉じる必要はありません。
ページの読み込み時にデータベースに接続する必要があります。
接続時間のオーバーヘッドを最小限に抑えるには、持続的接続を使用します。
<?php
$dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass,
array(PDO::ATTR_PERSISTENT => true));
?>
持続的接続を開いていない場合(そうですか?)、スクリプトが自動的に終了すると(つまり、すべてのページで)接続が閉じられます。
また、接続を開く実行はリソースを消費しません(まあ、そうですが、ごくわずかな時間です)。開いた接続を維持することはありません。
あなたは正しいバランスをとる必要があります。それぞれの部分に問題があります。3つの可能性すべてを調べてみましょう
永続的なMySQL接続
利点:一度ロードして忘れる
短所:自分でアクティブでなくなった接続を必ず強制終了する必要があります。また、休止状態の接続はまだいくつかのリソースを使用します。推奨されません。これは、リクエストが多い場合にのみ適切なケースであり、その時点でデータベースサーバーをクラスター化する必要があり、持続的接続はそれを大混乱に陥れる傾向があります。
1クエリ1リクエストモデル
利点:構築して忘れる
短所:極端なリソース使用。
良い解決策は適切なバランスです。DBHを初めて実際に必要なときにロードし、スクリプトが終了するまで保持します。スクリプトが終了したら、DBHが使用していたすべてのリソースを解放し、終了する必要があります。これにより、必要最小限のリソースを使用してすべてを実行できることが保証されます。