簡體   English   中英

計算每個頁面請求的查詢數量?

[英]Count number of queries per page request?

我需要知道每個頁面請求正在執行多少個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關閉連接之前計算已經發送了多少查詢並將答案記錄在文本文件中?

您可以擴展mysqli對象並覆蓋查詢方法:

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

$DB_CONNECTION = new logging_mysqli(...);

最好的方法之一是在$DB_CONNECTION->query()運行一個日志函數。

這樣,您既可以將每個查詢記錄到db表中,也可以對查詢速度進行基本測試,然后存儲它,或者僅增加計數(查詢數量)並存儲它。

創建擴展mysqli類,創建該類的$ DB_CONNECTION對象,並在實現query()方法時進行統計。 最終,它將調用parent::query()來完成實際工作。

創建一個代替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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM