- Модуль: rest
- Путь к файлу: ~/bitrix/modules/rest/lib/engine/access/loadlimiter.php
- Класс: BitrixRestEngineAccessLoadLimiter
- Вызов: LoadLimiter::finalize
static function finalize(): void
{
if (static::$timeRegistered && static::isActive())
{
$resource = static::getConnectionResource();
if ($resource)
{
foreach (static::$timeRegistered as $item)
{
$time = 0;
$firstTime = reset($item['timeStart']);
foreach ($item['timeStart'] as $k => $timeStart)
{
if ($item['timeFinish'][$k])
{
$time += $item['timeFinish'][$k] - $timeStart;
}
}
if ($time > static::$minimalFixTime)
{
$key = static::getKey($item['entityType'], $item['entity'], $item['method'], static::getNumBucket());
if ($resource->exists($key))
{
$resource->incrByFloat($key, $time);
}
else
{
$expireAt = $firstTime + static::$bucketCount * static::$bucketSize;
$resource->incrByFloat($key, $time);
$resource->expire($key, $expireAt);
$keyExpire = static::CACHE_EXPIRE_TIME_PREFIX . '|' . $key;
$resource->incrByFloat($keyExpire, $expireAt);
$resource->expire($keyExpire, $expireAt);
}
}
}
static::$timeRegistered = [];
}
}
}