Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
以PHP获取最后一个查询的实际(绝对)执行时间(不包括网络延迟等)_Php_Mysql_Function_Execution Time - Fatal编程技术网

以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函数?如果没有,为什么没有?有什么理由吗 有人说- 我认为

我想获得Mysql查询在我的项目中运行时的实际执行时间,因此在前后运行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" }