Rom*_*man 28 php mysql webserver execution-time
我从PHP执行MySQL查询,并想知道它们是多么耗时.有没有办法从PHP获取MySQL查询的执行时间?
我也想知道执行时间是否取决于Web服务器的加载方式.我可以想象,如果服务器忙于其他查询,查询将花费更多时间来执行.另一方面,我可以想象,如果服务器忙,查询将等待轮到它然后它将被执行(没有任何并行执行的查询)并且等待时间不包括在执行时间中.那么,两种情况中的哪些情况是正确的?
Chr*_*ian 57
可能有一些方法可以通过MySQL实现这一点,但是,简单(可靠)的方法是使用PHP的microtime函数,它以毫秒为单位返回当前时间.
microtime()以微秒返回当前的Unix时间戳.此功能仅在支持gettimeofday()系统调用的操作系统上可用.
getasfloat - 在没有可选参数的情况下调用时,此函数返回字符串"msec sec",其中sec是自Unix Epoch(1970年1月1日0:00:00 GMT)以来秒数测量的当前时间,msec为微秒部分.字符串的两个部分以秒为单位返回.
如果可选的get_as_float设置为TRUE,则返回float(以秒为单位).
一些示例代码:
$sql = '...';
$msc = microtime(true);
mysql_query($sql);
$msc = microtime(true)-$msc;
echo $msc . ' s'; // in seconds
echo ($msc * 1000) . ' ms'; // in millseconds
Run Code Online (Sandbox Code Playgroud)
G-J*_*G-J 11
microtime()需要时间来执行自己.如果你想直接从mysql获取数据,那么这样做......
mysql_query("SET profiling = 1;");
if (mysql_errno()) { die( "ERROR ".mysql_errno($link) . ": " . mysql_error($link) ); }
$query="SELECT some_field_name FROM some_table_name";
$result = mysql_query($query);
if (mysql_errno()) { die( "ERROR ".mysql_errno($link) . ": " . mysql_error($link) ); }
$exec_time_result=mysql_query("SELECT query_id, SUM(duration) FROM information_schema.profiling GROUP BY query_id ORDER BY query_id DESC LIMIT 1;");
if (mysql_errno()) { die( "ERROR ".mysql_errno($link) . ": " . mysql_error($link) ); }
$exec_time_row = mysql_fetch_array($exec_time_result);
echo "<p>Query executed in ".$exec_time_row[1].' seconds';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
50165 次 |
| 最近记录: |