コード例 #1
0
 /**
  * Метод сохраняет ошибку выполнения в файл
  * 
  * @param Exception $exception
  */
 public static function dumpError(Exception $exception, $additionalInfo = '')
 {
     if (ConfigIni::exceptionsMaxDumpCount() <= 0) {
         return;
         //---
     }
     $additionalInfo = trim("{$additionalInfo}");
     //Поставим защиту от двойного дампинга ошибки
     $SafePropName = 'ps_ex_dumped';
     if (property_exists($exception, $SafePropName)) {
         return;
         //---
     }
     $exception->{$SafePropName} = true;
     try {
         $INFO[] = 'SERVER: ' . (isset($_SERVER) ? print_r($_SERVER, true) : '');
         $INFO[] = 'REQUEST: ' . (isset($_REQUEST) ? print_r($_REQUEST, true) : '');
         $INFO[] = 'SESSION: ' . (isset($_SESSION) ? print_r($_SESSION, true) : '');
         $INFO[] = 'FILES: ' . (isset($_FILES) ? print_r($_FILES, true) : '');
         if ($additionalInfo) {
             $INFO[] = "ADDITIONAL:\n{$additionalInfo}\n";
         }
         $INFO[] = 'STACK:';
         $INFO[] = ExceptionHelper::formatStackFile($exception);
         $original = ExceptionHelper::extractOriginal($exception);
         $fname = get_file_name($original->getFile());
         $fline = $original->getLine();
         $DM = DirManager::autogen('exceptions');
         if ($DM->getDirContentCnt() >= ConfigIni::exceptionsMaxDumpCount()) {
             $DM->clearDir();
         }
         $DM->getDirItem(null, PsUtil::fileUniqueTime() . " [{$fname} {$fline}]", 'err')->putToFile(implode("\n", $INFO));
     } catch (Exception $ex) {
         //Если в методе дампа эксепшена ошибка - прекращаем выполнение.
         die("Exception [{$exception->getMessage()}] dump error: [{$ex->getMessage()}]");
     }
 }