3

PDO と MySQL で PHP コードを書いていたとき、関数内で接続が必要な場合は、次のように常に接続を作成していました。

result pseudo_function() {
  create and open connection
  do stuff
  close connection
  return result
}

さて、私は C でプログラミングを始めました。ポインターは、接続全体をパラメーターとして関数に渡す興味深い方法であることがわかりました。ユーザー要求全体が処理されるまで、関数間の接続を渡すほうがよいのではないかと考えていました。

明確にするために:1つのユーザーリクエストに対して、データベースを開き、データをフェッチし、何かを実行し、閉じて戻る関数への1〜5回の呼び出しがある可能性があります。

また、接続を開いたままにしておくと、パフォーマンスに違いが生じますか?

4

3 に答える 3

3

毎回新しい接続を開くよりも、接続を開いたままにし、その接続に対して 5 つの操作を実行する方が適切です。

シングルトン リポジトリ パターンを使用してデータベースを遅延ロードすることもできます。リポジトリは接続を 1 回だけ開き、次の呼び出しではキャッシュされた結果を返します。

于 2012-05-04T17:42:53.393 に答える
3

私が見たほとんどの PHP コードの「標準的なイディオム」は、「接続を開き、開いたままにする」ようです。

php.net は現在ダウンしているようですが、次の 2 つのリンクが参考になるかもしれません。

Apache を実行している場合は、おそらく mod_dbd が適切なソリューションになる可能性があります。

接続を閉じないことの意味についての良い議論は次のとおりです。

于 2012-05-04T17:43:33.183 に答える
2

PHP で Web アプリケーションを開発する場合、データベース接続を一度開いて、スクリプトが終了したときに閉じるのが一般的です (そして、最も効率的な方法だと思います)。他の作業が完了している間、接続を開いたままにしても、実際にはオーバーヘッドが発生したり、アクションがまったく必要になったりすることはありませんが、毎回再接続すると発生します。

于 2012-05-04T17:42:58.247 に答える