0

JavaScriptファイルがAjax経由でアクセスしているfunctions.phpファイルを持つアプリケーションを書いています。現在、データベースに接続し、クエリを実行してからデータベースを閉じる各機能があります。これを行うためのより効率的な方法が必要であることはわかっています。データベース資格情報を 1 回だけ入力して、すべての機能でそれを使用したいと考えています。これを行う最も効率的な方法は何ですか? ここでこのトピックに関するかなりの数の回答を読みましたが、それらはすべて異なり、迷っています。ちょうど私を正しい方向に向けてください:)

現在、私の関数はこのようにデータベースを開いています。

$db = new mysqli("hostname", "username", "password");
$db -> select_db("database name");

または、このように

mysql_connect("hostname", "username", "password");
mysql_select_db('database name') or die( "Unable to select database");
4

2 に答える 2

1

簡単な答えは接続プーリングです。接続プールは、データベースに常に接続されている接続のプールです。接続数の最高水準点と最低水準点を設定できます。

アプリケーションがプールからの接続を要求すると、アイドル状態の接続の 1 つを使用して再利用します。これは、データベース接続をスケーリングする方法です。

PHPを使用しているので、次を見てください。

  1. http://www.oracle.com/technetwork/topics/php/php-scalability-ha-twp-128842.pdf
  2. http://php.net/manual/en/mysqlnd-ms.pooling.php

この辺の情報はネット上にたくさんあります。

于 2013-08-16T01:33:35.060 に答える
0

データベース接続変数がすでに設定されているかどうかを確認できます。

if (!isset($db)) {
    $db = new mysqli(...);
    $db->select_db("database_name");
}

同様にmysql_connect(接続リソースを返すため、他の関数へのオプションの引数であっても、変数に割り当てることができます)。

別の方法は、静的変数で関数を使用することです。

function connect_db() {
    static $db = new mysqli(...);
    static $selected = $db->select_db("database_name");
    return $db;
}

3 番目のオプションは、各関数ではなく、スクリプトの最初に 1 回データベースに接続することです。$db次に、各関数に渡すか、 でアクセスしglobal $db;ます。

于 2013-08-16T01:42:27.577 に答える