19

MYSQL を使用する予定です。利用可能な接続プーリング拡張機能はありますか? または、接続のための通常の練習は何ですか? これはどこでも使われているものでしょうか...

mysqli_connect("localhost", "xxx", "xxx", "test");

人々はただ普通に使うのmysql_connectpconnect..? pconnectPConnect はどのように設定すればよいですか?

4

6 に答える 6

22

使ったことがありますmysql_pconnect()か? は、2 つの大きな違いをmysql_pconnect()除いて、非常によく似た動作をします。mysql_connect()

まず、接続時に、関数は最初に、同じホスト、ユーザー名、およびパスワードで既に開かれている (永続的な) リンクを見つけようとします。見つかった場合は、新しい接続を開く代わりに、その識別子が返されます。

次に、スクリプトの実行が終了しても、SQL サーバーへの接続は閉じられません。代わりに、リンクは将来の使用のために開いたままになります (mysql_close()によって確立されたリンクは閉じませんmysql_pconnect())。

したがって、このタイプのリンクは「永続的」と呼ばれます

ここで確認してください

于 2009-05-06T17:15:13.500 に答える
10

永続的な接続のサポートは、PHP 5.3 で mysqli 拡張機能に導入されました。サポートは、PDO MYSQL および ext/mysql に既に存在していました。永続的な接続の背後にある考え方は、クライアント プロセスとデータベースの間の接続は、複数回作成および破棄されるのではなく、クライアント プロセスによって再利用できるということです。これにより、未使用の接続がキャッシュされ、再利用できるようになるため、接続が必要になるたびに新しい接続を作成するオーバーヘッドが削減されます。

mysql 拡張機能とは異なり、mysqli は永続的な接続を開くための個別の機能を提供しません。永続的な接続を開くには、接続時にホスト名の前に p: を追加する必要があります。

ソース: http://www.php.net/manual/en/mysqli.persistconns.php

sample code:
$GLOBALS["mysqli"] = new mysqli('p:localhost', 'username', 'password', 'db_name');

編集:だまされて申し訳ありませんが、他の回答は見られませんでした。

于 2011-06-01T10:02:54.237 に答える
4

古い mysql 拡張機能の代わりに、mysqli または PDO 拡張機能を使用してください。

ホスト名の前に「p:」を付けると、永続的な接続を使用するようにmysqli_connectまたはに指示できます。mysqli::__construct

http://php.net/manual/en/mysqli.construct.php

于 2011-08-02T12:34:22.393 に答える
3

This is an old question, but I wanted to add my two cents, as I was looking at this same issue. As of PHP 5.3, mysqli supports persistent connections, you just need to prepend p: to the front of the host name.

If you are running Apache, have you tried looking into connection pooling with mysql through the Apache mod_dbd module? It supports connection pooling for MySQL. http://httpd.apache.org/docs/2.2/mod/mod_dbd.html

于 2010-07-01T03:49:24.537 に答える
1

3 つの接続機能があります。

mysql_connect : 通常の接続、プーリングなし、ストアド プロシージャを実行できません (SQL のみ)

mysql_pconnect : プールされた接続、ストアド プロシージャを実行できません (SQL のみ)

mysqli_connect : 通常の接続、プーリングなし、ストアド プロシージャを実行できます (mysql 5 以降が必要)

mysqli_pconnect : 存在しません。ストアド プロシージャとプーリングの両方を処理する組み込みの接続関数はありません。

私のアドバイス(経験とサーフィンによる):

ストアド プロシージャが必要な場合は、プーリングを省略して mysqli_connect を使用します。

ストアド プロシージャが必要ない場合は、mysql_pconnect を使用します。

于 2010-03-21T08:41:40.857 に答える
0

正確な答えではありませんが、PHP Data Objects (PDO) http://php.net/manual/en/book.pdo.php および PDO for MySQL http://php.net/manual/en/も検討できると思います。 ref.pdo-mysql.php

于 2010-03-21T08:54:44.500 に答える