[英]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.