我一直在努力清除Laravel网站的滞后和计时问题,并且很好奇是否有一种方法可以检查Laravel网站与其MySQL数据库的主机之间的连接时间。
我正在尝试消除出现延迟的可能性,我想确保这两个问题不在单独的主机上(尽管在同一本地网络中)。
答案 0 :(得分:0)
由于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浮点时间戳,因此您可以将这三个值进行比较,以更好地确定延迟是网络滞后还是查询执行滞后。
答案 1 :(得分:0)