2009-05-06 44 views
18

MYSQLを使用する予定です。接続プーリング拡張機能はありますか?または、接続のための通常の練習は何ですか? これはPHP接続プールmysql

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

は、人々が普通使用しています...すべての場所で使用されるものですmysql_connectまたはpconnect ..? pconnectはどれくらいいいですか、PConnectの設定は何ですか?

答えて

21

mysql_pconnect()を今までに使ったことがありますか? mysql_pconnect()は、mysql_connect()のように2つの大きな違いがあります。

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

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

にmysql_connect:通常の接続、無プーリング、ストアドプロシージャを実行することはできません

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

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

1

それをチェック(SQLのみ)

mysql_pconnect:プールされた接続は実行できません。 tored手順(単にSQL)

mysqli_connect:存在しません:通常の接続、無プーリング、ストアドプロシージャを実行することができます

mysqli_pconnect(mysqlの5以上を必要とします)。ストアドプロシージャが必要な場合は、

プーリングを省略し、必要ない場合はmysqli_connect

を使用します。そこにストアドプロシージャを処理し、(経験やサーフィンを経由して)

私のアドバイスをプール両方の接続機能に建てられた何ではありませんストアドプロシージャ、は、mysql_pconnect

2

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

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

+0

ありがとう:

はあなたが「P」を使用してホスト名の前に付ける場合mysqli_connectまたはmysqli::__constructは、永続的な接続を使用するように伝えることができる必要があり、永続的な接続のためのホストプレフィックスを** PHPバージョン5.3 **その小さなナゲットはどこにも見つけられていない。 –

9

永続的な接続のサポートはmysqliの 拡張のためのPHP 5.3で導入され ました。 PDO MYSQLおよびext/mysqlにはすでにサポートがありました( )。永続的接続の背後にある のアイデアは、 クライアントプロセス とデータベースとの間の接続が、 でなく、 クライアントプロセスによって再利用できるということです。 これにより、未使用の接続がキャッシュされ、再利用の準備ができているので、 が必要なたびに フレッシュ接続を作成するオーバーヘッドが軽減されます。

mysqli は、永続的な接続を開くための別の関数 を提供していません。 持続的接続を開く 接頭辞p:をホスト名に接続すると、 接続時。

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

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

編集:だまされやすい人のために申し訳ありませんが、他の回答を見ていません。