}
if (!isset(self::$_nav[$variant][$locale])) {
- \Barryvdh\Debugbar\Facade::startMeasure('nav', 'Init Navigation object ' . $variant . ', ' . $locale);
- self::$_nav[$variant][$locale] = Cache::tags(self::CACHE_TAG)->remember('navigation_' . $variant . '_' . $locale . '_' . $viewOffline, 43200, function () use ($locale, $variant, $viewOffline) {
-
- return Cache::lock('navigation_' . $variant . '_' . $locale . '_' . $viewOffline, 60)->get(function () use ($locale, $variant, $viewOffline) {
+ $cacheKey = 'navigation_' . $variant . '_' . $locale . '_' . $viewOffline;
+ $lock = Cache::lock('lock_' . $cacheKey, 120);
+ $lock->block(120, function () use ($viewOffline, $cacheKey, $variant, $locale) {
+ \Barryvdh\Debugbar\Facade::startMeasure('nav', 'Init Navigation object ' . $variant . ', ' . $locale);
+ self::$_nav[$variant][$locale] = Cache::tags(self::CACHE_TAG)->remember($cacheKey, 43200, function () use ($locale, $variant, $viewOffline) {
\Barryvdh\Debugbar\Facade::startMeasure('donav', 'Do Navigation object ' . $variant . ', ' . $locale);
$nav = new Item();
$nav->setLocale($locale);
$nav->setVariant($variant);
$nav->initFromDatabase('#root', $viewOffline);
-
\Barryvdh\Debugbar\Facade::stopMeasure('donav');
return $nav;
});
-
+ \Barryvdh\Debugbar\Facade::stopMeasure('nav');
});
- \Barryvdh\Debugbar\Facade::stopMeasure('nav');
+
}
return self::$_nav[$variant][$locale];