0

ページ要求ごとに実行されている SQL クエリの数を知る必要があります。サイトはすでに完成しており、最適化分析を実行しているだけなので、提供されるソリューションがウェブサイト全体の構造を変更する必要がないことを希望します.

単一の接続を使用して、すべてのクエリを MySQL データベースに送信します。

define('DATABASE_SERVER', '127.0.0.1');
define('DATABASE_NAME', 'foco');
define('DATABASE_USERNAME', 'root');
define('DATABASE_PASSWORD', '');

$DB_CONNECTION = new mysqli(
    DATABASE_SERVER,
    DATABASE_USERNAME,
    DATABASE_PASSWORD,
    DATABASE_NAME,
    3306
);

次に、使用するクエリを実行します。

$query = "SELECT * FROM `sometable`";
$queryRun = $DB_CONNECTION->query($query);

送信されたクエリの数をカウントし、php が接続を閉じる直前に回答をテキスト ファイルに記録する方法はありますか?

4

4 に答える 4

4

You can extend the mysqli object and override the query method:

class logging_mysqli extends mysqli {
    public $count = 0;
    public function query($sql) {
        $this->count++;
        return parent::query($sql);
    }
}

$DB_CONNECTION = new logging_mysqli(...);
于 2012-10-22T10:35:53.813 に答える
1

One of the best ways would be to run a log function inside your $DB_CONNECTION->query().

That way you can either log each individual query to a db table, or perform basic test on query speed and then store this, or just increment the count (for number of queries) and store this.

于 2012-10-22T10:34:42.093 に答える
0

Create class extending mysqli, make $DB_CONNECTION object of that class and do your statistics in your implementation of query() method. Eventually it shall call parent::query() to do real job.

于 2012-10-22T10:36:05.407 に答える
0

mysqli の代わりに使用するプロキシを直接作成します...

class DatabaseCounter {
    private $querycount = 0;
    private $mysqli = null;

    // create mysqli in here in constructor


    public function query(...) {
        $this->queryCount++;
        $this->mysqli->query(...);
    }
}

$DB_CONNECTION = new DatabaseCounter();
于 2012-10-22T10:38:38.323 に答える