以PHP获取最后一个查询的实际(绝对)执行时间(不包括网络延迟等)
我想获得Mysql查询在我的项目中运行时的实际执行时间,因此在前后运行PHP以PHP获取最后一个查询的实际(绝对)执行时间(不包括网络延迟等),php,mysql,function,execution-time,Php,Mysql,Function,Execution Time,我想获得Mysql查询在我的项目中运行时的实际执行时间,因此在前后运行PHPmicrotime()和减法都不起作用 当我们在命令行中运行查询时,结果显示如下所示的时间信息:- xxx rows affected in YY sec 如何使用PHP获取相同的时间信息。我在另一个问题中搜索了一下,但没有得到任何类似的结果。是否没有像mysql\u error(),mysql\u impacted\u rows()这样返回其他重要信息的PHP函数?如果没有,为什么没有?有什么理由吗 有人说- 我认为
microtime()
和减法都不起作用
当我们在命令行中运行查询时,结果显示如下所示的时间信息:-
xxx rows affected in YY sec
如何使用PHP获取相同的时间信息。我在另一个问题中搜索了一下,但没有得到任何类似的结果。是否没有像mysql\u error()
,mysql\u impacted\u rows()
这样返回其他重要信息的PHP函数?如果没有,为什么没有?有什么理由吗
有人说-
我认为这是执行死刑的最好办法
时间是用来执行一些程序的
函数,如exec()或system()
有人有返回实际执行时间的PHP代码吗?试试这个:
<?php
$host='localhost';
$username='testing';
$password='testing';
$dbname='test';
$DBC = new mysqli($host,$username,$password,$dbname);
$DBC->query('set profiling=1');
$DBC->query('SELECT * FROM abc');
if ($result = $DBC->query("SHOW profiles", MYSQLI_USE_RESULT)) {
while ($row = $result->fetch_row()) {
var_dump($row);
}
$result->close();
}
if ($result = $DBC->query("show profile for query 1", MYSQLI_USE_RESULT)) {
while ($row = $result->fetch_row()) {
var_dump($row);
}
$result->close();
}
$DBC->query('set profiling=0');
?>
第二个if
语句提供查询的详细执行时间。
结果应该是准确的,因为您使用的是mysql内部分析器。我之所以使用mysqli,是因为我已经习惯了。您还可以使用普通的mysql函数来完成此任务。PHP不可能在不解析PHP代码/网络延迟的情况下测量查询的执行情况-只有DBMS可以这样做(但您可以使用PHP从DBMS检索值)。不过,在大多数情况下,更明智的方法是让mysql直接登录。顺便问一下,您的问题得到了回答吗?@ITroubs,感谢您提供的解决方案,我将检查并运行它,然后让您知道
array(3) { [0]=> string(1) "1" [1]=> string(10) "0.00024300" [2]=> string(17) "SELECT * FROM abc" }