Exemple #1
0
 /** @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));
 }