2011-08-30 9 views
2

PHP :: PDOを呼び出す関数があり、関数が接続を開き、MySQLを実行し、接続を閉じてデータを返します。PHP :: PDO複数回の接続の開閉

これに重大な問題はありませんでしたが、これが悪い習慣である理由は何ですか?これを行うリスクは何ですか?

+1

これは、関数が呼び出されるたびに 'PDO'オブジェクトの新しいインスタンスを作成することを意味しますか?もしそうなら、あなたがこれを望む特定の理由は何ですか? –

答えて

2

私が気づいているリスクはありませんが、接続を確立するためのネットワーク遅延があります。 localhostに接続しているときにうまくいく可能性がありますが、HTTP要求ごとに複数の接続を確立していて、何らかの理由でセカンダリデータベースサーバーに移動したい場合、アプリケーションのスケーリングに問題が生じる可能性があります。

PHPページは本質的にシングルスレッドなので、複数のスレッドを自分で起動しない限り、(余分な)並行性の問題はありません。 InnoDBとSQLのトランザクションを使用して、複数の要求にまたがる並行性の問題を防ぐのは良い考えです。

0

実行するクエリが増えていない限り、これは問題ではありません。

+0

私の懸念は、 'n'クエリの場合にSQLサーバで何か不思議なことが起こっている可能性があることです。 'n 'は数値で、私はその値を知らない。 – Incognito

1

接続を複数回開いたり閉じたりするにはかなりのオーバーヘッドがあります。パフォーマンスの問題になるまではそれほど大きな取引ではありません。問題が発生した場合は、スクリプトの実行中に接続を開いたままにし、複数のデータベーストランザクションで同じ接続を再利用するように変更することをお勧めします。これはかなり一般的な方法です。

スクリプトごとに固定された(そして少数の)データベーストランザクションがない場合は、各アクションで接続を切断してから切断することをお勧めします。スクリプトを一度開き、スクリプトが終了するまで接続を保持します。

関連する問題