web-dev-qa-db-ja.com

php接続プールmysql

MYSQLを使用する予定です。利用可能な接続プール拡張機能はありますか?または、接続の通常の方法は何ですか?これはどこでも使われているものですか...

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

人々は通常のmysql_connectまたはpconnect ..を使用しますか? pconnectはどの程度優れていますか?また、PConnectに対してどのような設定を行う必要がありますか?

19
coool

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

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

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

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

チェックしてください ここ

22
Sadegh

持続的接続のサポートは、mysqli拡張機能のPHP 5.3で導入されました。サポートはPDOMYSQLと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');

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

10
Benedict

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

あなたはmysqli_connectまたはmysqli::__constructホスト名の前に「p:」を付けると、持続的接続を使用します

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

4
Tyrael

これは古い質問ですが、同じ問題を検討していたので、2セントを追加したいと思いました。 PHP 5.3以降、mysqliは持続的接続をサポートしています。ホスト名の前にp:を追加するだけです。

Apacheを実行している場合、Apache mod_dbdモジュールを介してmysqlとの接続プールを調べてみましたか? MySQLの接続プールをサポートします。 http://httpd.Apache.org/docs/2.2/mod/mod_dbd.html

3
snoopaloop

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

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

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

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

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

私のアドバイス(経験とサーフィンを通して):

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

ストアドプロシージャが必要ない場合は、mysql_pconnectを使用してください

1
daghan

正確な答えではありませんが、PHP Data Objects(PDO) http://php.net/manual/en/book.pdo.php そしてMySQLのPDO http://php.net/manual/en/ref.pdo-mysql.php

0
aviv