00001 <?php 00002 00007 class oxDebugInfo 00008 { 00016 public function formatTemplateData($aViewData = array()) 00017 { 00018 $sLog = ''; 00019 reset( $aViewData ); 00020 while ( list( $sViewName, $oViewData ) = each( $aViewData ) ) { 00021 // show debbuging information 00022 $sLog .= "TemplateData[$sViewName] : <br />\n"; 00023 $sLog .= print_r( $oViewData, 1); 00024 } 00025 return $sLog; 00026 } 00027 00033 public function formatMemoryUsage() 00034 { 00035 $sLog = ''; 00036 if ( function_exists( 'memory_get_usage' ) ) { 00037 $iKb = ( int ) ( memory_get_usage() / 1024 ); 00038 $iMb = round($iKb / 1024, 3); 00039 $sLog .= 'Memory usage: '.$iMb.' MB'; 00040 00041 if ( function_exists( 'memory_get_peak_usage' ) ) { 00042 $iPeakKb = ( int ) ( memory_get_peak_usage() / 1024 ); 00043 $iPeakMb = round($iPeakKb / 1024, 3); 00044 $sLog .= ' (peak: '.$iPeakMb.' MB)'; 00045 } 00046 $sLog .= '<br />'; 00047 00048 if ( version_compare( PHP_VERSION, '5.2.0', '>=' ) ) { 00049 $iKb = ( int ) ( memory_get_usage( true ) / 1024 ); 00050 $iMb = round($iKb / 1024, 3); 00051 $sLog .= 'System memory usage: '.$iMb.' MB'; 00052 00053 if ( function_exists( 'memory_get_peak_usage' ) ) { 00054 $iPeakKb = ( int ) ( memory_get_peak_usage( true ) / 1024 ); 00055 $iPeakMb = round($iPeakKb / 1024, 3); 00056 $sLog .= ' (peak: '.$iPeakMb.' MB)'; 00057 } 00058 $sLog .= '<br />'; 00059 } 00060 } 00061 return $sLog; 00062 } 00063 00071 public function formatExecutionTime($dTotalTime) 00072 { 00073 $sLog = 'Execution time :'.round($dTotalTime, 4).'<br />'; 00074 global $aProfileTimes; 00075 global $aExecutionCounts; 00076 global $aProfileBacktraces; 00077 if (is_array($aProfileTimes)) { 00078 $sLog .= "----------------------------------------------------------<br>".PHP_EOL; 00079 arsort($aProfileTimes); 00080 $sLog .= "<table cellspacing='10px' style='border: 1px solid #000'>"; 00081 $iNr = 1; 00082 foreach ($aProfileTimes as $sKey => $sVal) { 00083 $sLog .= "<tr><td style='border-bottom: 1px dotted #000;min-width:300px;'>Profile $sKey: </td><td style='border-bottom: 1px dotted #000;min-width:100px;'>" . round($sVal, 5) ."s</td>" ; 00084 if ($dTotalTime) { 00085 $sLog .= "<td style='border-bottom: 1px dotted #000;min-width:100px;'>".round($sVal*100/$dTotalTime, 2)."%</td>"; 00086 } 00087 if ($aExecutionCounts[$sKey]) { 00088 $sLog .= " <td style='border-bottom: 1px dotted #000;min-width:50px;padding-right:30px;' align='right'>" . $aExecutionCounts[$sKey] . "</td>" 00089 ."<td style='border-bottom: 1px dotted #000;min-width:15px; '>*</td>" 00090 ."<td style='border-bottom: 1px dotted #000;min-width:100px;'>" . round($sVal / $aExecutionCounts[$sKey], 5) . "s</td>" . PHP_EOL; 00091 } else { 00092 $sLog .= " <td colspan=3 style='border-bottom: 1px dotted #000;min-width:100px;'> not stopped correctly! </td>" . PHP_EOL; 00093 } 00094 00095 if (isset($aProfileBacktraces[$sKey])) { 00096 $sLog .= "<td style='border-bottom: 1px dotted #000;min-width:15px; '>"; 00097 foreach ($aProfileBacktraces[$sKey] as $sBtId => $aBt) { 00098 $iCnt = (int)$aProfileBacktraceCounts[$sBtId]; 00099 $sLog .= "<a style='color:#00AA00;margin:5px;cursor:pointer' onclick='var el=document.getElementById(\"profdbg_trace_$iNr\"); if (el.style.display==\"block\")el.style.display=\"none\"; else el.style.display = \"block\";'>Count($iCnt) - TRACE (show/hide)</a><br><br>"; 00100 $sLog .= "<div id='profdbg_trace_$iNr' style='display:none'>"; 00101 foreach ($aBt as $iLevel => $aInfo) { 00102 $sLog .= "<i><strong>$iLevel: {$aInfo['function']}</strong></i> at {$aInfo['file']}:{$aInfo['line']}<br>"; 00103 } 00104 $sLog .= "</div>"; 00105 $iNr++; 00106 } 00107 $sLog .= "</td>"; 00108 } 00109 $sLog .= '</tr>'; 00110 } 00111 $sLog .= "</table>"; 00112 } 00113 return $sLog; 00114 } 00115 00116 00122 public function formatGeneralInfo() 00123 { 00124 $sLog = "cl=".oxConfig::getInstance()->getActiveView()->getClassName(); 00125 if ( ($sFnc = oxConfig::getInstance()->getActiveView()->getFncName() ) ) { 00126 $sLog .= " fnc=$sFnc"; 00127 } 00128 return $sLog; 00129 } 00130 00136 public function formatDbInfo() 00137 { 00138 $sLog = "----------------------------------------------------------<br>".PHP_EOL; 00139 $sLog .= "-- oxdebugdb --<br>".PHP_EOL; 00140 $oDbgDb = oxNew('oxdebugdb'); 00141 $aWarnings = $oDbgDb->getWarnings(); 00142 $iNr = 1; 00143 foreach ($aWarnings as $w) { 00144 $sLog .= "{$w['check']}: {$w['time']} - <span style='color:#900000;margin:5px'>".htmlentities($w['sql'], ENT_QUOTES, 'UTF-8')."</span>"; 00145 $sLog .= "<div id='dbgdb_trace_$iNr' style='display:none'>".nl2br($w['trace'])."</div>"; 00146 $sLog .= "<a style='color:#00AA00;margin:5px;cursor:pointer' onclick='var el=document.getElementById(\"dbgdb_trace_$iNr\"); if (el.style.display==\"block\")el.style.display=\"none\"; else el.style.display = \"block\";'>TRACE (show/hide)</a><br><br>"; 00147 ++$iNr; 00148 } 00149 return $sLog; 00150 } 00151 00157 public function formatAdoDbPerf() 00158 { 00159 $oPerfMonitor = @NewPerfMonitor( oxDb::getDb() ); 00160 if ( $oPerfMonitor ) { 00161 ob_start(); 00162 $oPerfMonitor->UI( 5 ); 00163 return ob_get_clean(); 00164 } 00165 return ''; 00166 } 00167 }
1.7.1