有没有办法衡量网络请求花费的时间({3}}的数量/时间长度?
由此,我指的是当前线程(或它的授权)花费在使用硬件上的实际时间量。
至于测量 CPU时间,它有一个函数doing I/O:
<?php
$a = getrusage();
f();
$b = getrusage();
$sec = ($b['ru_utime.tv_sec'] - $a['ru_utime.tv_sec']) + ($b['ru_stime.tv_sec'] - $a['ru_stime.tv_sec']);
echo 'It took ~' . $sec . 's of CPU time.';
function f(){
for($x=0;$x<120000000;++$x){
// busy loop
}
}
是否有测量I / O的功能?
所述功能的示例用法:
<?php
$credits_remaining = 8500;
$a = Time_Spent_On_Hard_Disk_So_Far();
Get_File_From_Hard_Disk($credits_remaining); // limit request to $credits_remaining number of seconds
$b = Time_Spent_On_Hard_Disk_So_Far();
$time_spent = $b - $a;
echo "Time spent on hard disk: ", $time_spent;
$credits_remaining -= $time_spent;
(一个 C 解决方案没问题,只要我们可以从PHP调用它而不会遇到严重的开销。)
答案 0 :(得分:0)
在你的特定情况下,我会在你开始你的操作之前得到一个microtime [stamp],与另一个microtime [stamp]做差异,将结果存储在一个数组中,该数组包含解释指标所指的内容的元数据to,最后将该信息存储在数据存储,SOMEWHERE(数据库,txt文件,会话等)中。
最有可能是跟踪此类信息的最佳(最简单)方法,并让您的代码在多种操作环境中保持可移植性。
/**
* Get Micro Time
*
* Returns the current (epoch) time with micro seconds.
*
* @param [in] $elapsed %REF% of difference since last execution
* @return | FLOAT time with micro seconds from epoch
*/
function microtime(&$elapsed = null) {
static $previous = null;
list($micro, $epoch) = explode(" ", microtime());
$now = round(floatval($epoch.substr($micro, 1)), 3);
if ($previous) {
$elapsed = round($now - $previous,3);
}
$previous = $now;
return $now;
}