2017-08-04 7 views
0

私はPHP MySQL innoDB接続を使用する効率的な方法を探していますが、Web上で決定的な情報を見つけることはできません。mysqli接続を使用する最も効率的な方法

私が知っているように、持続的接続は非持続性のものよりもはるかに高速で、

我々は道を以下に接続を設定することができます

$instance_mysqli = new mysqli('p:127.0.0.1', 'username', 'password', 'db'); 

しかし、公式サイトから、それは言いましたデフォルトの動作は再使用時に「リセット」されますが、これは遅くなります。 http://php.net/manual/en/mysqli.persistconns.php

mysqli拡張モジュールは、自動的に() C-API関数mysql_change_userを呼び出すことで、このクリーンアップを行います。自動クリーンアップ機能には、 の長所と短所があります。利点は、 プログラマが、 が自動的に呼び出されるため、クリーンアップコードの追加について心配する必要がなくなったことです。ただし、 接続プールから接続が返されるたびに、 クリーンアップを実行するコードを実行する必要があるため、コード が少し遅くなる可能性があります。

"リセット"を避けるために、上記のコンストラクタにパラメータを渡す方法はありませんか?唯一の方法は、ドキュメントが示唆しているようにソースコードから拡張機能を再コンパイルすることです。

私の悩みは... mysqliがスマートなので、デフォルトで自動的に接続をリセットできるということです。多くの人がまだ非永続的な接続を使用していますが、これはさらに遅いです。

+0

申し訳ありませんが、誤解されています。永続的な接続を作成するのではなく、暗黙的なリセットを避けることです。だからええ、私は 'MYSQLI_NO_CHANGE_USER_ON_PCONNECT'を定義して再コンパイルする必要があると思います – BNT

+0

と私は永続的な接続が暗黙的な"リセット "を持っているのだろうか、私たちは"非永続的な接続と同じように使用することができますか?永続的な接続を言っているWeb上の多くの記事では予期しない動作が起こっているので、それを使用する前に慎重に考えるべきですが、公式ドキュメントは "リセット"機能が実際にそれらの "予期しない動作"を修正できることを示しているので、 – user8100646

答えて

2

クリーンアップの有無にかかわらず、接続のコストは、永続的であるかどうかにかかわらず、非常に小さいです。

通常、プログラムの開始時に1つの接続を取得し、最後まで接続を維持する必要があります。 (いくつかの例外があります)

接続が本当に目立つのは、各SQLクエリの前に接続を取得する場合だけです。

ボトムライン:索引やシステム設計などを心配しないで、接続を取得することではありません。

関連する問題