Php 如何获取查询执行的次数
在PHP中,是否有方法获取24小时内执行查询的总次数?在数据库中创建另一条记录,并从零开始其值,然后编写另一个简单函数let call updateCount(),执行查询时将调用updateCount()。updateCount()将有一个简单的sql查询,每次执行查询主查询时,该查询都会将记录增加1Php 如何获取查询执行的次数,php,mysql,Php,Mysql,在PHP中,是否有方法获取24小时内执行查询的总次数?在数据库中创建另一条记录,并从零开始其值,然后编写另一个简单函数let call updateCount(),执行查询时将调用updateCount()。updateCount()将有一个简单的sql查询,每次执行查询主查询时,该查询都会将记录增加1 我希望这能有所帮助。试着多安排一张桌子。使用以下列将其命名为executetb: exid(int,主增量和自动增量) executionnumber(int) datetimeexec列(应
我希望这能有所帮助。试着多安排一张桌子。使用以下列将其命名为executetb:
(exid
,主增量和自动增量)int
(executionnumber
)int
列(应具有datetimeexec
数据类型)datetime
executetb
中是否存在当前的数据。在运行主查询之前,先等待当前的执行次数:
$today = date("Y-m-d");
if($stmt = $connection->prepare("SELECT exid, executionnumber FROM executetb WHERE DATE(datetimeexec) = ? ")){
$stmt->bind_param("s",$today);
$stmt->execute();
$stmt->store_result();
$check = $stmt->num_rows;
if($check == 0){ /* IF NO EXISTING DATA FOR TODAY */
$exact = date("Y-m-d H:i:s"); /* GET CURRENT DATE AND TIME */
$executionnumber = 0; /* START WITH 0 */
if($stmt2 = $connection->prepare("INSERT INTO executetb (executionnumber, datetimeexec) VALUES (?)")){
$stmt2->bind_param("is",$executionnumber,$exact);
$stmt2->execute();
$exid = $stmt2->insert_id; /* GET THE INSERTED ID */
$stmt2->close();
} /* END OF CREATING A DATA FOR TODAY */
} /* END OF IF NO EXISTING DATE FOR TODAY */
else { /* ELSE, IF THERE IS ALREADY A DATA FOR TODAY */
$stmt->bind_result($exid,$executionnumber); /* GET THE CURRENT EXECUTION NUMBER FOR TODAY */
$stmt->fetch();
}
$stmt->close();
} /* END OF PREPARED STATEMENT */
并在执行查询时使用if()
语句:
if($stmt = $connection->prepare("SELECT column FROM table")){ /* WHEN THE STATEMENT IS TRUE */
$stmt->execute();
$executionnumber = $executionnumber + 1; /* INCREMENT THE CURRENT NUMBER OF EXECUTION */
mysqli_query($connection,"UPDATE executetb SET executionnumber = $executionnumber WHERE exid = '$exid'"); /* THEN UPDATE THE EXECUTION TABLE */
$stmt->close();
}
功能:
要将其放入函数中,只需创建一个函数:
function execute($today){
/* PUT HERE THE FIRST CODE I'VE PROVIDED EXCEPT FOR THE DATE TODAY */
return $executionnumber;
}
if(/* YOUR MAIN STATEMENT QUERY HERE */){
$today = date("Y-m-d");
$numberofexec = execute($today);
$numberofexec = $numberofexec + 1;
mysqli_query($con,"UPDATE executetb SET executionnumber = '$numberofexec' WHERE DATE(datetimeexec) = '$today'");
} /* END OF YOUR MAIN STATEMENT */
并调用您的函数:
function execute($today){
/* PUT HERE THE FIRST CODE I'VE PROVIDED EXCEPT FOR THE DATE TODAY */
return $executionnumber;
}
if(/* YOUR MAIN STATEMENT QUERY HERE */){
$today = date("Y-m-d");
$numberofexec = execute($today);
$numberofexec = $numberofexec + 1;
mysqli_query($con,"UPDATE executetb SET executionnumber = '$numberofexec' WHERE DATE(datetimeexec) = '$today'");
} /* END OF YOUR MAIN STATEMENT */
您可以通过从最后1天开始的常规日志中出现的查询的计数来获得它。例如— 首先启用常规日志并输出到表
SET global general_log = 1;
SET global log_output = 'table';
然后运行查询
select count(*) from mysql.general_log where timestampdiff(second,event_time,now()) <= 86400 and argument ='select * from test where id=4';
+----------+
| count(*) |
+----------+
| 3 |
+----------+
1 row in set (0.00 sec)
从mysql.general\u log中选择count(*),其中timestampdiff(第二个,event\u time,now())表示您尝试了什么??表现出一些努力…你说的24小时是什么意思???该查询是否在单个页面中运行?在一次运行中??或者页面被多次调用???如果是这样的话,您需要使用一个db表来跟踪它,我希望有一些php函数,如果有的话。但是,这也有帮助。谢谢:)@KumariManisha-如果你想在函数中更新我的答案,请更新它。@KumariManisha我已经更新了我的答案,你只需一次查询就可以得到它。