Changeset 3788

Show
Ignore:
Timestamp:
07/28/07 12:28:53 (3 years ago)
Author:
coolengineer
Message:
  • #451
  • 변수 이름을 바꿈.
  • 파일 포맷을 DOS 포맷으로 바꿈 (CRLF 개행)
  • DB 질의 시간과 전체 흐른시간의 단위를 ms로 맞춤.
  • 하단에 전체 소요시간을 기술
  • 막대 그래프로 흐른 시간을 표시
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/components/Needlworks.Function.Debug.php

    r3773 r3788  
    1515global $__tcSqlLog; 
    1616global $__tcSqlLogCount; 
    17 global $__tcSqlLogBeginTime; 
    18 global $__tcSqlLogStartTime; 
    19  
    20 $__tcSqlLogStartTime = explode(' ', microtime()); 
     17global $__tcSqlQueryBeginTime; 
     18global $__tcPageStartTime; 
     19global $__tcPageEndTime; 
     20 
     21$__tcPageStartTime = explode(' ', microtime()); 
    2122 
    2223$__tcSqlLog= array(); 
     
    2526function __tcSqlLogBegin( $sql ) 
    2627{ 
    27     global $__tcSqlLog, $__tcSqlLogBeginTime, $__tcSqlLogCount; 
     28    global $__tcSqlLog, $__tcSqlQueryBeginTime, $__tcSqlLogCount; 
    2829 
    2930    $backtrace = debug_backtrace(); 
     
    3233 
    3334    $__tcSqlLog[$__tcSqlLogCount] = array( 'sql' => trim($sql), 'backtrace' => $backtrace ); 
    34     $__tcSqlLogBeginTime = explode(' ', microtime()); 
     35    $__tcSqlQueryBeginTime = explode(' ', microtime()); 
    3536} 
    3637function __tcSqlLogEnd( $result, $cachedResult = 0 ) 
    3738{ 
    38     global $__tcSqlLog, $__tcSqlLogBeginTime, $__tcSqlLogCount, $__tcSqlLogStartTime; 
     39    global $__tcSqlLog, $__tcSqlQueryBeginTime, $__tcSqlLogCount, $__tcPageStartTime; 
    3940    static $client_encoding = ''; 
    40     $tcSqlLogEndTime = explode(' ', microtime()); 
    41     $elapsed = ($tcSqlLogEndTime[1] - $__tcSqlLogBeginTime[1]) + ($tcSqlLogEndTime[0] - $__tcSqlLogBeginTime[0]); 
     41    $tcSqlQueryEndTime = explode(' ', microtime()); 
     42    $elapsed = ($tcSqlQueryEndTime[1] - $__tcSqlQueryBeginTime[1]) + ($tcSqlQueryEndTime[0] - $__tcSqlQueryBeginTime[0]); 
    4243    if( !$client_encoding ) { 
    4344        $client_encoding = str_replace('_','-',mysql_client_encoding()); 
     
    5758        $__tcSqlLog[$__tcSqlLogCount]['elapsed'] = 0; 
    5859    } 
     60    $__tcSqlLog[$__tcSqlLogCount]['elapsed'] = sprintf("%4.1f", $__tcSqlLog[$__tcSqlLogCount]['elapsed'] ); 
    5961    $__tcSqlLog[$__tcSqlLogCount]['cached'] = $cachedResult; 
    6062    $__tcSqlLog[$__tcSqlLogCount]['rows'] = 0; 
    61     $__tcSqlLog[$__tcSqlLogCount]['endtime'] = ($tcSqlLogEndTime[1] - $__tcSqlLogStartTime[1]) + ($tcSqlLogEndTime[0] - $__tcSqlLogStartTime[0]); 
    62     $__tcSqlLog[$__tcSqlLogCount]['endtime'] = ceil($__tcSqlLog[$__tcSqlLogCount]['endtime'] * 10000) / 10; 
     63    $__tcSqlLog[$__tcSqlLogCount]['endtime'] = ($tcSqlQueryEndTime[1] - $__tcPageStartTime[1]) + ($tcSqlQueryEndTime[0] - $__tcPageStartTime[0]); 
     64    $__tcSqlLog[$__tcSqlLogCount]['endtime'] = sprintf("%4.1f",ceil($__tcSqlLog[$__tcSqlLogCount]['endtime'] * 10000) / 10); 
    6365    if( ! $cachedResult && mysql_errno() == 0 ) { 
    6466        switch( strtolower(substr($__tcSqlLog[$__tcSqlLogCount]['sql'], 0, 6 )) ) 
     
    7577    } 
    7678    $__tcSqlLogCount++; 
    77     $__tcSqlLogBeginTime = 0; 
     79    $__tcSqlQueryBeginTime = 0; 
    7880} 
    7981 
    8082function __tcSqlLogPoint($description = null) 
    8183{ 
    82     global $__tcSqlLog, $__tcSqlLogBeginTime, $__tcSqlLogCount, $__tcSqlLogStartTime; 
     84    global $__tcSqlLog, $__tcSqlQueryBeginTime, $__tcSqlLogCount, $__tcPageStartTime, $__tcPageEndTime; 
    8385    if (is_null($description)) $description = 'Point';  
    8486    $backtrace = debug_backtrace(); 
     
    8688    array_shift($backtrace); 
    8789    $__tcSqlLog[$__tcSqlLogCount] = array( 'sql' => '['. trim($description) .']', 'backtrace' => $backtrace ); 
    88     $__tcSqlLogBeginTime = explode(' ', microtime()); 
    89     $tcSqlLogEndTime = explode(' ', microtime()); 
     90    $__tcSqlQueryBeginTime = explode(' ', microtime()); 
     91    $tcSqlQueryEndTime = explode(' ', microtime()); 
    9092    $__tcSqlLog[$__tcSqlLogCount]['error'] = ''; 
    9193    $__tcSqlLog[$__tcSqlLogCount]['errno'] = ''; 
     
    9395    $__tcSqlLog[$__tcSqlLogCount]['cached'] = ''; 
    9496    $__tcSqlLog[$__tcSqlLogCount]['rows'] = ''; 
    95     $__tcSqlLog[$__tcSqlLogCount]['endtime'] = ($tcSqlLogEndTime[1] - $__tcSqlLogStartTime[1]) + ($tcSqlLogEndTime[0] - $__tcSqlLogStartTime[0]); 
    96     $__tcSqlLog[$__tcSqlLogCount]['endtime'] = ceil($__tcSqlLog[$__tcSqlLogCount]['endtime'] * 10000) / 10; 
     97    $__tcSqlLog[$__tcSqlLogCount]['endtime'] = ($tcSqlQueryEndTime[1] - $__tcPageStartTime[1]) + ($tcSqlQueryEndTime[0] - $__tcPageStartTime[0]); 
     98    $__tcSqlLog[$__tcSqlLogCount]['endtime'] = sprintf("%4.1f",ceil($__tcSqlLog[$__tcSqlLogCount]['endtime'] * 10000) / 10); 
     99    $__tcPageEndTime = $__tcSqlLog[$__tcSqlLogCount]['endtime']; 
    97100    $__tcSqlLog[$__tcSqlLogCount]['rows'] = ''; 
    98101    $__tcSqlLogCount++; 
    99     $__tcSqlLogBeginTime = 0; 
     102    $__tcSqlQueryBeginTime = 0; 
    100103} 
    101104 
     
    119122function __tcSqlLogDump() 
    120123{ 
    121     global $__tcSqlLog, $__tcSqlLogBeginTime, $__tcSqlLogCount; 
     124    global $__tcSqlLog, $__tcPageEndTime; 
    122125    global $service; 
    123     global $__tcSqlLogPumped; 
    124      
    125     if (isset($__tcSqlLogPumped)) return; 
    126     $__tcSqlLogPumped = true; 
     126    static $sLogPumped = false; 
     127     
     128    if (!empty($sLogPumped)) return; 
     129    $sLogPumped = true; 
    127130     
    128131    __tcSqlLogPoint('shutdown'); 
     
    242245EOS; 
    243246 
    244     $elapsed_total = 0; 
     247    $elapsed_total_db = 0; 
    245248 
    246249    $elapsed = array(); 
     
    249252    foreach( $__tcSqlLog as $c => $log ) { 
    250253        $elapsed[$count] = array( $log['elapsed'], $count ); 
     254        $__tcSqlLog[$c]['percent'] = sprintf("%4.1f", $log['endtime']*100/$__tcPageEndTime); 
    251255        $count++; 
    252256    } 
     
    263267        <thead> 
    264268            <tr> 
    265                 <th>count</th><th class="sql">query string</th><th>elapsed</th><th>elapsed sum</th><th>rows</th><th>error</th><th>stack</th> 
     269                <th>count</th><th class="sql">query string</th><th>elapsed (ms)</th><th>elapsed sum (ms)</th><th></th><th>rows</th><th>error</th><th>stack</th> 
    266270            </tr> 
    267271        </thead> 
     
    292296            $trclass .= ' debugCached'; 
    293297            $count_label = ''; 
     298            $backtrace = ''; 
    294299        } 
    295300        if ($log['sql'] == '[shutdown]') { 
     
    298303            $trclass .= ' debugSystem'; 
    299304            $count_label = ''; 
     305            $backtrace = ''; 
    300306        } 
    301307         
    302         $log['elapsed'] = sprintf("%01.4f",$log['elapsed'] / 1000); 
    303         $elapsed_total += $log['elapsed']; 
    304          
     308        $elapsed_total_db += $log['elapsed']; 
     309        $elapsed_total = $log['endtime']; 
     310        $progress_bar = $log['percent'] / 2; //Max 50px; 
     311        $log['percent'] = "<div style='background:#f00;line-height:10px;width:{$progress_bar}px'>&nbsp;<div>"; 
    305312        print <<<TBODY 
    306313        <tr class="debugSQLLine{$trclass}"> 
     
    309316            <td class="elapsed">{$log['elapsed']}</td> 
    310317            <td class="elapsedSum">{$log['endtime']}</td> 
     318            <td class="elapsedSum">{$log['percent']}</td> 
    311319            <td class="rows">{$log['rows']}</td> 
    312320            <td class="error">{$error}</td> 
     
    321329    print '</tbody>'; 
    322330     
    323     $elapsed_total = $elapsed_total / 1000; 
    324331    $count--; 
    325332    $real_query_count = $count - $cached_count; 
     
    328335<tfoot> 
    329336    <tr> 
    330         <td colspan='7'>$count ($real_query_count+$cached_count cache) Queries, $elapsed_total seconds elapsed</td> 
     337        <td colspan='7'> 
     338        $count ($real_query_count+$cached_count cache) Queries <br /> 
     339        $elapsed_total_db ms elapsed in db query, overall $elapsed_total ms elapsed 
     340        </td> 
    331341    </tr> 
    332342</tfoot> 
     
    336346    global $service; 
    337347    if( ! empty($service['debug_session_dump'])) { 
    338         print '<pre> $_SESSION = '; 
     348        print '<pre> session_id = ' . session_id() . "\r\n"; 
     349        print '$_SESSION = '; 
    339350        print_r( $_SESSION ); 
    340351        print '</pre>';