我一直在尝试清理我的Laravel站点的延迟和计时问题,我很好奇是否有一种方法可以检查主机Laravel站点和它的MySQL数据库主机之间的连接计时。
我正在尝试排除lag出现的可能性,并且我希望确保这两个主机位于不同的主机上(尽管在同一个本地网络中)不是问题所在。
发布于 2019-05-25 14:15:18
因为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时间戳,因此您可以将这三次都进行比较,以便更准确地确定延迟是网络延迟还是查询执行延迟。
发布于 2019-05-25 15:25:39
https://stackoverflow.com/questions/56301994
复制相似问题