• Модуль: 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 = [];
		}
	}
}