/** * Summary accounting of the query time * * @param float $aStartTime //start measuring time * @param float $aNameAdapterDB //DB adapter * @return string */ static function profilerTotalReport2Html($aStartTime, $aNameAdapterDB) { $_resultProfiler = ''; //-------------------------- // Получим признак авторизации администратора $auth = Zend_Auth::getInstance(); $identity = $auth->getIdentity(); $isAdmin = $identity && $identity->user_type == 'administrator'; //Получим данные конфигурации Profiler $config = Zend_Registry::get('config'); // Получим признак включения профайлера $profilerEnable = (bool) $config['profiler']['runtime']['enable']; // Получим кол. записей инф. о быстродействии в сессиии $rowsCount = (int) $config['profiler']['count']['rows']; // Если да, то пишем инф о быстродействиии в сессию // в переменную $Zend_Auth->results_profiler -> array() if ($profilerEnable && $isAdmin) { $_endTimeProfiler = microtime(1); // Получим инф. о времени работе скрипта $dispatchTime = number_format($_endTimeProfiler - $aStartTime, 5, '.', ' '); $durationStartApplication = number_format(Zend_Registry::get("Duration_StartApplication"), 5, '.', ' '); $durationBootstrap = number_format(Zend_Registry::get("Duration_Bootstrap"), 5, '.', ' '); $totalTime = number_format($dispatchTime + $durationStartApplication + $durationBootstrap, 5, '.', ' '); // Получим инф. о используемой памяти при работе скрипта $memoryUsage_StartIndexPHP = Zend_Registry::get("MemoryUsage_StartIndexPHP"); $memoryUsage_StartApplication = Zend_Registry::get("MemoryUsage_StartApplication"); $memoryUsage_Bootstrap = Zend_Registry::get("MemoryUsage_Bootstrap"); // Максимально используемая память при выполнении скрипта $usePeakMemory = self::showPeakMemoryUsage('kb'); // Используемая память в конце выполнения скрипта $useEndMemory = self::showMemoryUsage('kb'); $_resultProfiler .= '<br /><br /><b>--- ' . self::Translate('Используемая память при выполнении скрипта') . ' ---</b><br /><br />'; $_resultProfiler .= self::Translate("Максимальное кол. используемой памяти скриптом") . ": {$usePeakMemory} kb."; $_resultProfiler .= '<br /><br /><b>--- ' . self::Translate('Общее время выполнения скрипта') . ' ---</b><br /><br />'; $_resultProfiler .= self::Translate("Общее время выполнения скрипта") . ": {$totalTime} sec.<br /><br />"; $_resultProfiler .= $totalTime . " = (durationStartApplication({$durationStartApplication}) + durationBootstrap({$durationBootstrap}) + dispatchLoopTime({$dispatchTime}))" . " sec.<br /><br />"; // Получим профайлер для базы данных $db = Zend_Registry::get('db'); $dbProfiler = $db->getProfiler(); if ($dbProfiler->getEnabled()) { $queriesTime = number_format(self::profilerSumTimeQueries('db'), 5, '.', ' '); $_resultProfiler .= self::Translate("Время выполнения запросов к базе данных") . ": {$queriesTime} sec.<br /><br />"; //Суммарная информация о времени выполнения запросов к базе данных $_resultProfiler .= self::profilerDbSumInfo2Html($aNameAdapterDB); //Информация о времени выполнения каждого запроса к базе данных $_resultProfiler .= self::profilerQueriesInfo2Html($aNameAdapterDB); } $_resultProfiler .= '<b>--- ' . Default_Plugin_SysBox::Translate('Информация о выполнении отдельных частей скрипта') . ' ---</b><br /><br />'; $_resultProfiler .= self::Translate("Кол. используемой памяти вначале скрипта") . ": {$memoryUsage_StartIndexPHP} kb.<br /><br />"; $_resultProfiler .= self::Translate("Время выполнения") . " (index.php + new Zend_Application): {$durationStartApplication} sec.<br />"; $_resultProfiler .= self::Translate("Кол. используемой памяти после") . " (new Zend_Application): {$memoryUsage_StartApplication} kb.<br /><br />"; $_resultProfiler .= self::Translate("Время выполнения") . " (Bootstrap): {$durationBootstrap} sec.<br />"; $_resultProfiler .= self::Translate("Кол. используемой памяти после") . " (Bootstrap): {$memoryUsage_Bootstrap} kb.<br /><br />"; //Получим инф. о действии контроллера $front = Zend_Controller_Front::getInstance(); $request = $front->getRequest(); $module = $request->getModuleName(); $controller = $request->getControllerName(); $action = $request->getActionName(); $strRequest = "{$module}/{$controller}/{$action}"; //Определим нужно ли обновлять инф. о профайлере в сессии if ($strRequest !== 'admin/tools/profiler' && $strRequest !== 'admin/tools/clearhist') { //Получим информацию о выполнении скрипта $infoProfiler = Zend_Registry::get("Result_Profiler"); $_resultProfiler .= $infoProfiler; $_resultProfiler .= self::Translate("Кол. используемой памяти в конце скрипта") . ": {$useEndMemory} kb."; // Очистим инф. о выполнении скрипта Zend_Registry::set("Result_Profiler", ''); $Zend_Auth = Zend_Registry::get("Zend_Auth"); if (!$Zend_Auth->results_profiler) { $Zend_Auth->results_profiler = array(); } $strRequestFrm = "<span style='color: green;'>{$strRequest}</span>"; $totalTimeFrm = "<span style='color: green;'>{$totalTime}</span>"; list($msec, $sec) = explode(" ", microtime()); $msecs = explode('.', number_format($msec, 3, '.', '')); $currentTime = date('H:i:s', $sec) . '.' . $msecs[1]; $currentTimeFrm = "<span style='color: green;'>{$currentTime}</span>"; $key = 'Tm' . ': ' . $currentTimeFrm . ' ' . 'Req' . ': ' . $strRequestFrm . ' ' . 'Rtime' . ': ' . $totalTimeFrm . ' sec.'; $results_profiler = $Zend_Auth->results_profiler; // Ограничим число записей $count = count($results_profiler); if ($count == $rowsCount) { array_shift($results_profiler); } // Запомним результат $results_profiler[$key] = $_resultProfiler; $Zend_Auth->results_profiler = $results_profiler; } } }
/** * Constructor * * @param array $params */ public function __construct($params) { $this->_schema = $params['schema'] ? $params['schema'] : ''; $this->_table = $params['table']; $this->_fieldKey1 = $params['fieldKey1']; $this->_fieldKey2 = $params['fieldKey2']; $this->_id = (int) $params['id'] ? $params['id'] : 0; if (isset($params['adapter'])) { $this->_adapter = $params['adapter']; } else { // Если адаптер не задан, пробуем подключить адаптер заданный по умолчанию для Zend_Db_Table $adapter = Zend_Db_Table::getDefaultAdapter(); // Если адаптер по умолчанию не задан выбрасываем исключение if ($adapter == null) { throw new Exception(Default_Plugin_SysBox::Translate('Адаптер базы данных, заданный по умолчанию не был найден')); } } }
function getSize() { if (isset($_SERVER["CONTENT_LENGTH"])) { return (int) $_SERVER["CONTENT_LENGTH"]; } else { throw new Exception(Default_Plugin_SysBox::Translate('Длина, полученного содержимого слишком большая.')); } }
/** * Initialization Log, Search, KCFinder * * @return void */ protected function _initLog() { $params = array(); //------------------ $_startTime = microtime(1); //Получим конфигурацию $config = $this->_options; //----- Create Zend_Log object ----- $columnMapping = array('ts' => 'timestamp', 'msg' => 'message', 'pr' => 'priority', 'pr_name' => 'priorityName'); $countMsg = $config['logging']['log']['max_rows']; $countEx = $config['logging']['exeption']['max_rows']; $countStat = $config['logging']['statistics']['max_rows']; // Get DB $db = Zend_Registry::get('db'); // Set params $params['db'] = $db; $params['columnMap'] = $columnMapping; // Create writer for DB $params['table'] = 'log_msg'; $params['max_rows'] = $countMsg; $writerMsg = new Default_Model_Log($params); $params['table'] = 'log_error'; $params['max_rows'] = $countEx; $writerEx = new Default_Model_Log($params); $params['table'] = 'log_stat'; $params['max_rows'] = $countStat; $writerStat = new Default_Model_Log($params); // Create logers $logMsg = new Zend_Log($writerMsg); $logEx = new Zend_Log($writerEx); $logStat = new Zend_Log($writerStat); // Adding new priorities for the $logMsg $logMsg->addPriority('LOGIN_OK', 8); $logMsg->addPriority('LOGIN_ERR', 9); $logMsg->addPriority('LOGOUT', 10); $logMsg->addPriority('REG_OK', 11); $logMsg->addPriority('REG_ERR', 12); $logMsg->addPriority('DETAILS_OK', 13); $logMsg->addPriority('FETCHPASS_COMPLETE_OK', 14); $logMsg->addPriority('FETCHPASS_COMPLETE_ERR', 15); $logMsg->addPriority('FETCHPASS_CONFIRM_OK', 16); $logMsg->addPriority('FETCHPASS_CONFIRM_ERR', 17); $logMsg->addPriority('MAIL_OK', 18); $logMsg->addPriority('MAIL_ERR', 19); $logMsg->addPriority('DB_SAVE_ERR', 20); $logMsg->addPriority('DB_DELETE_ERR', 21); $logMsg->addPriority('POST_EDIT', 22); $logMsg->addPriority('POST_SET_STATUS', 23); $logMsg->addPriority('ADMIN_POST_EDIT', 24); $logMsg->addPriority('ADMIN_ROW_UPDATE', 25); $logMsg->addPriority('ADMIN_ROW_INSERT', 26); $logMsg->addPriority('ADMIN_ROW_DELETE', 27); $logMsg->addPriority('MY_MSG', 28); // Adding new priorities for the $logStat $logStat->addPriority('LOGIN_OK', 8); $logStat->addPriority('LOGIN_ERR', 9); $logStat->addPriority('MAIL_OK', 10); $logStat->addPriority('FETCHPASS_COMPLETE_OK', 11); $logStat->addPriority('FETCHPASS_COMPLETE_ERR', 12); $logStat->addPriority('FETCHPASS_CONFIRM_OK', 13); $logStat->addPriority('FETCHPASS_CONFIRM_ERR', 14); $logStat->addPriority('POST_OPEN', 15); $logStat->addPriority('VIDEO_PLAY', 16); $logStat->addPriority('AUDIO_PLAY', 17); $emailParams = $config['logging']['email']; if ($emailParams['send']) { $mail = Default_Plugin_SysBox::createMail($emailParams); $writer = new Zend_Log_Writer_Mail($mail); $my_request = Default_Plugin_SysBox::getUrlRequest(); if (!$emailParams['subject']) { $writer->setSubjectPrependText('Errors request - ' . $my_request); } $writer->addFilter(Zend_Log::EMERG); $writer->addFilter(Zend_Log::ALERT); $writer->addFilter(Zend_Log::CRIT); $writer->addFilter(Zend_Log::ERR); $logger->addWriter($writer); } // Save to Registry Zend_Registry::set("Zend_Log", $logMsg); Zend_Registry::set("Zend_LogEx", $logEx); Zend_Registry::set("Zend_LogStat", $logStat); // Remember in the session array of search results $Zend_Auth = Zend_Registry::get("Zend_Auth"); if (!$Zend_Auth->search) { $Zend_Auth->search = array(); } //------------ Configure default search ------------- // Establish a query analyzer in the coding Utf8 Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_Utf8_CaseInsensitive()); //------ Initialization file manager ------------- Default_Plugin_SysBox::iniKCFinder(); //---- Defining script execution time ---- $infoProfiler = Default_Plugin_SysBox::Translate("Время выполнения") . " Bootstrap_initLog(): "; Default_Plugin_SysBox::profilerTime2Registry($_startTime, $infoProfiler); }