标题中包含的内容:
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$start = $time;
我在页脚中有什么:
$time = microtime();
$time = explode(' ', $time);
$time = $time[1] + $time[0];
$finish = $time;
$total_time = round(($finish - $start), 4);
echo 'Page generated in ' . $total_time . ' seconds.';
输出:页面生成时间为1292008977.54秒。
有人可以帮我弄清楚为什么结果不对吗?我使用的是PHP5。
答案 0 :(得分:6)
看到这是Google的第一个结果我认为我会分享我对这个问题的解决方案。把它放在页面顶部:
$startScriptTime=microtime(TRUE);
然后将此代码放在页面底部:
$endScriptTime=microtime(TRUE);
$totalScriptTime=$endScriptTime-$startScriptTime;
echo "\n\r".'<!-- Load time: '.number_format($totalScriptTime, 4).' seconds -->';
当您查看页面来源时,您可以在HTML最后一行的注释中看到加载时间。
答案 1 :(得分:5)
您可以使用此简单函数来避免变量范围问题:
<?php
function timer()
{
static $start;
if (is_null($start))
{
$start = microtime(true);
}
else
{
$diff = round((microtime(true) - $start), 4);
$start = null;
return $diff;
}
}
timer();
echo 'Page generated in ' . timer() . ' seconds.';
答案 2 :(得分:4)
microtime()
使用 微秒 返回当前的 Unix时间戳。我没有看到任何数学从微秒转换为秒。
microtime(true)
在 秒
答案 3 :(得分:1)
$page_loadtime_in_millisec = ($page_loadtime / 1000);
echo '<pre>Page Infor:
Page Load Time : ' . $page_loadtime.' <b>Microseconds</b><br/>
Page Load Time : ' . $page_loadtime_in_millisec.' <b>Milliseconds</b><br/>
Page Load Time : ' . number_format(($page_loadtime_in_millisec/1000),18) . ' <b>Seconds</b></pre>';
答案 4 :(得分:0)
我喜欢用这样的东西。使得多个代码块的时间变得容易,而不需要处理变量名等。必须启用会话。
function code_timer ($name) {
$mtime = explode(' ',microtime());
$time = $mtime[1] + $mtime[0];
//determine if we're starting the timer or ending it
if ($_SESSION["timer-$name"]) {
$stime=$_SESSION["timer-$name"];
unset($_SESSION["timer-$name"]);
return ($time - $stime);
} else {
$_SESSION["timer-$name"]=$time;
return(true);
}
}
用法:
code_timer ('a');
//do stuff
echo "page generated in " . code_timer('a');
答案 5 :(得分:0)
将此放入您的标题
<?php
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
?>
并在你的页脚中
<html><center>Page generated in <?php $load = microtime();print (number_format($load,2));?> seconds. <?php
$loadtime = explode(' ', microtime()); $loadtime = $loadtime[0]+$loadtime[1]-$starttime; echo 'Peak memory usage: ',round(memory_get_peak_usage()/1048576, 2), 'MB';
?></center></html>
这将告诉您生成网站页面需要多长时间以及用于加载页面的内存量
答案 6 :(得分:0)
问题在于可变范围。您在标题中设置了$ start变量,但在页脚中,此变量将为空。所以$ total_time只是当前时间 - 0,给你当前时间。
解决方案是使用php的GLOBALS。在标题中:
$GLOBALS['time_start'] = microtime(true);
在页脚中:
$total_time = round(($finish - $GLOBALS['time_start']), 4);
答案 7 :(得分:0)
我不会在每一页中使用microtime,而是将microtime插入$ _REQUEST,然后从函数内部的当前时间中减去该时间,并设置在脚本执行终止时调用的函数:
register_shutdown_function ( 'Your_function_name' );
我认为使用全局脚本很有用,该脚本将包含在整个应用程序的每个脚本/类的开头,它可以帮助我处理错误,管理会话等......
在$ _REQUEST中添加microtime将是该脚本的第一行,您也可以在那里包含终止功能。