<?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秒
预期结果:
在4秒内进入国家美国 在3秒内处理国家 GB 在5秒内处理国家 DE
如何计算每个国家/地区的正确执行时间?
答案 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);
}
}