获取PHP中最后一个查询的实际(绝对)执行时间(不包括网络延迟等)

San*_*ath 5 php mysql function execution-time

我想在我的项目中运行时获得实际的Mysql查询执行时间,因此在microtime()之前和之后运行PHP 并减去将无效.

当我们在命令行中运行查询时,结果显示如下的时序信息: -

xxx rows affected in YY sec
Run Code Online (Sandbox Code Playgroud)

如何使用PHP获取相同的时间信息.我搜索在PHP的MySQL函数在其他SO质疑这里,并在这里却没有得到类似的事情.有没有这样的PHP函数mysql_error(),mysql_affected_rows()它返回其他重要信息?如果不是为什么不存在?有什么理由吗?

有人说 -

我认为获得执行时间的最佳方法是使用一些程序执行函数,如exec()或system().

有没有人有一个可以返回实际执行时间的PHP代码?

ITr*_*ubs 11

试试这个:

<?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');

?>
Run Code Online (Sandbox Code Playgroud)

第一个if为您提供查询的总执行时间,如下所示:

array(3) { [0]=>  string(1) "1" [1]=>  string(10) "0.00024300" [2]=>  string(17) "SELECT * FROM abc" }
Run Code Online (Sandbox Code Playgroud)

第二个if为您提供查询的详细执行时间.由于您使用的是mysql内部探查器,因此结果应该是准确的.