找出脚本在几秒钟内运行了多久?
问题描述:
我有一个脚本运行在'而'循环。我需要确定脚本运行了多长时间,并且它是否超过10秒才会终止它。我写的代码返回奇怪的十进制值(一秒钟可能是'5.342 ...',其他可能是'903.322 ...')。 有人能告诉我怎么做到这一点?找出脚本在几秒钟内运行了多久?
$timer = microtime(false);
while(/*...*/)
{
$currTime = microtime(false);
$timeDiff = $currTime - $timer;
$timeDiff *= 1000;
if ($timeDiff > 10)
{
//...
}
}
答
您正在追踪微秒。如果您只想查看秒数,请使用round()
或ceil()
将它舍入为
。
您可能还会考虑set_time_limit()
,它控制脚本允许运行多长时间。
set_time_limit(10); // allow ten seconds for this script to finish
您可以使用register_shutdown_function()
处理任何清理是必要的,如果剧本没有按时完成。
答
$timeDiff /= 1000;
1000微秒是第二,而不是其他方式
答
相信的说法应该是真实的,看到http://php.net/manual/en/function.microtime.php
尝试:
$timer = microtime(true);
while(true)
{
$currTime = microtime(true);
$timeDiff = $currTime - $timer;
if ($timeDiff > 10)
{
die();
}
}
+0
尽管只有+/-秒,但它不会精确到毫秒。 – asgerhallas 2010-01-02 19:24:38
不会被乘以1000做到了吗? – 2010-01-02 18:44:06
不,乘以1000不一定能确保一个非分数结果:'3.29381 * 1000 = 3293.81' – Sampson 2010-01-02 18:48:58
整点是我不能让这个事情触发一个错误。所以我必须确保脚本在达到10秒后终止。 – 2010-01-02 18:49:43