Поскольку Laravel реализован на PHP, вы можете сделать что-то вроде этого.
$TimeQuerySent = microtime(true) ;
// Send Request
$TimeQueryReturned = microtime(true) ;
$TimeConsumed = $TimeQueryReturned - $TimeQuerySent ;
Вышеизложенное использует тот факт, что вызов microtime приводит к тому, что он возвращает число с плавающей запятой. Поскольку время прогрессирует вперед, $ TimeQueryReturned всегда больше, чем $ TimeQuerySent, и точность микросекунды должна быть адекватной, если в соединении больше мимолетной задержки.
Конечно, вышеизложенное измеряет только общее время, затраченное запросом, которое включает время, потраченное сервером на выполнение запроса.
Получить информацию со стороны сервера можно, добавив в запрос что-то вроде следующего.
declare StartTime FLOAT;
set StartTime=UNIX_TIMESTAMP(UTC_TIMESTAMP(6));
select starttime,....
Когда первый оператор является самым первым оператором в вашей хранимой подпрограмме или динамически сгенерированном операторе SQL, StartTime возвращает время начала выполнения запроса на сервере, что примерно так близко, как вы можете получить точно, когда движок MySQL начал работать над ним. Запрос UTC_TIMESTAMP (6) приводит к тому, что временная метка возвращается к ближайшей микросекунде, и неявно преобразует ее в плавающее, а обтекание функции UNIX_TIMESTAMP вокруг нее преобразует возвращенную временную метку в метку времени Unix. , Поскольку все три значения являются временными метками Unix с плавающей точкой, вы можете сравнить все три раза, чтобы определить, является ли задержка сетевой задержкой или задержкой выполнения запроса.