分组期间的脚本执行时间

时间:2012-01-14 18:58:28

标签: php

<?php

$urls = array(
    'us/1',
    'us/2',
    'gb/1',
    'gb/2',
    'de/1',
    'de/2',
);

$current_country = '';
foreach ($urls as $url) {
    $sleep_sec = rand(1, 3);
    printf('Proccessed url <b>%s</b> in %s sec%s', strtoupper($url), $sleep_sec, '<br/>');

    $country = substr($url, 0, 2);
    if ($current_country !== $country) {
        $start_at = microtime(true);
        $end_at = microtime(true) - $start_at;

        $logs[] = sprintf('Proccessed country <b>%s</b> in %s sec', strtoupper($country), $end_at);
    }
    $current_country = $country;

    sleep($sleep_sec);
}

echo str_repeat('<br>', 2);

foreach($logs as $log) {
    echo $log;
    echo '<br>';
}

现在的结果是:

在2秒内处理网址 US / 1 在2秒内处理网址 US / 2 在1秒内处理网址 GB / 1 在2秒内处理网址 GB / 2 在3秒内处理网址 DE / 1 在2秒内处理网址 DE / 2
在1.9073486328125E-6秒中进入国家美国 在2.1457672119141E-6秒中处理国家 GB 在5.0067901611328E-6秒

中进入国家 DE

预期结果:

在4秒内进入国家美国 在3秒内处理国家 GB 在5秒内处理国家 DE

如何计算每个国家/地区的正确执行时间?

1 个答案:

答案 0 :(得分:0)

移动你的代码行,使它们真正有意义:

$start_at = microtime(true);
foreach ($urls as $url) {
    $sleep_sec = rand(1, 3);
    sleep($sleep_sec);
    printf('Proccessed url <b>%s</b> in %s sec%s', strtoupper($url), $sleep_sec, '<br/>');

    $country = substr($url, 0, 2);
    $current_country = $country;
    if ($current_country !== $country) {
        $end_at = microtime(true) - $start_at;
        $logs[] = sprintf('Proccessed country <b>%s</b> in %s sec', strtoupper($country), $end_at);
        $start_at = microtime(true);
    }
}