Проблема с microtime() при подсчете время исполнения SQL
Задача: вводится массив из SQL запросов. Циклом проходим по массиву, выполняем запросы. Засекаем время выполнения запроса через microtime();
Вот этот кусок кода выполняет это. (плюс здесь всякие функции echo() - ну это я дебаг делаю,)
Код:
foreach($SQLs as $query) {
$mc1=microtime();
list($usec,$sec) = explode(" ",$mc1);
$time["start"] = (float)$usec + (float)$sec;
$result=$this->_query($query);
$mc2=microtime();
list($usec,$sec) = explode(" ",$mc2);
$time["end"] = (float)$usec + (float)$sec;
echo("Microtime1:'".$mc1."' | Microtime2:'".$mc2."'<br>");
echo("Start:'".$time["start"]."' | End:'".$time["end"]."'<br><br>");
// бла-бла. остальной код
}
$mc1=microtime();
list($usec,$sec) = explode(" ",$mc1);
$time["start"] = (float)$usec + (float)$sec;
$result=$this->_query($query);
$mc2=microtime();
list($usec,$sec) = explode(" ",$mc2);
$time["end"] = (float)$usec + (float)$sec;
echo("Microtime1:'".$mc1."' | Microtime2:'".$mc2."'<br>");
echo("Start:'".$time["start"]."' | End:'".$time["end"]."'<br><br>");
// бла-бла. остальной код
}
Решил пробелму так:
Код:
//заменил цикл в первом посте на это:
foreach($SQLs as $query) {
list($usec1,$sec1)=explode(" ",microtime());
$result=$this->_query($query);
list($usec2,$sec2)=explode(" ",microtime());
$time=round($sec2-$sec1+$usec2-$usec1,$this->microtimeRound);
}
foreach($SQLs as $query) {
list($usec1,$sec1)=explode(" ",microtime());
$result=$this->_query($query);
list($usec2,$sec2)=explode(" ",microtime());
$time=round($sec2-$sec1+$usec2-$usec1,$this->microtimeRound);
}
Почему пример в первом посте отказывался пахать я так и не понял(((