/** @return PsProfilerInterface */ private function getProfiler($profilerId) { //Не будем выполнять get_file_name($profilerId), так как нужно вернуть профайлер максимально быстро if ($this->CAHCE->has($profilerId)) { return $this->CAHCE->get($profilerId); } check_condition($profilerId, 'Profiler id cannot be empty.'); if (!$this->enabled) { return $this->CAHCE->set($profilerId, new PsProfilerEmpty($profilerId)); } $di = $this->getProfilerDi($profilerId); $pr = null; //Проверим текущий размер профайлера if ($di->isMaxSize(ConfigIni::profilingMaxFileSize())) { $locked = PsLock::lock(__CLASS__ . "::compressProfiler({$profilerId})", false); if ($locked) { $this->compressProfiler($di); PsLock::unlock(); } else { //Разимер превышен и мы не смогли получить лок для дампа профайлера. Не будем в этот раз вести профайлинг. $pr = new PsProfilerEmpty($profilerId); } } return $this->CAHCE->set($profilerId, $pr ? $pr : new PsProfilerImpl($profilerId)); }