Beispiel #1
0
 public function function_list()
 {
     $dataFile = webgrind::get('dataFile');
     if ($dataFile == '0') {
         $files = Webgrind_Filehandler::getInstance()->getTraceList();
         $dataFile = $files[0]['filename'];
     }
     $reader = Webgrind_Filehandler::getInstance()->getTraceReader($dataFile, webgrind::get('costFormat', Kohana::config('webgrind.defaultCostformat')));
     $functions = array();
     $shownTotal = 0;
     $breakdown = array('internal' => 0, 'user' => 0, 'class' => 0, 'include' => 0);
     for ($i = 0; $i < $reader->getFunctionCount(); $i++) {
         $functionInfo = $reader->getFunctionInfo($i);
         if (false !== strpos($functionInfo['functionName'], 'php::')) {
             $breakdown['internal'] += $functionInfo['summedSelfCost'];
             $humanKind = 'internal';
             $kind = 'blue';
         } elseif (false !== strpos($functionInfo['functionName'], 'require_once::') || false !== strpos($functionInfo['functionName'], 'require::') || false !== strpos($functionInfo['functionName'], 'include_once::') || false !== strpos($functionInfo['functionName'], 'include::')) {
             $breakdown['include'] += $functionInfo['summedSelfCost'];
             $humanKind = 'include';
             $kind = 'grey';
         } else {
             if (false !== strpos($functionInfo['functionName'], '->') || false !== strpos($functionInfo['functionName'], '::')) {
                 $breakdown['class'] += $functionInfo['summedSelfCost'];
                 $humanKind = 'class';
                 $kind = 'green';
             } else {
                 $breakdown['user'] += $functionInfo['summedSelfCost'];
                 $humanKind = 'procedural';
                 $kind = 'orange';
             }
         }
         if (!(int) webgrind::get('hideInternals', 0) || strpos($functionInfo['functionName'], 'php::') === false) {
             $shownTotal += $functionInfo['summedSelfCost'];
             $functions[$i] = $functionInfo;
             $functions[$i]['nr'] = $i;
             $functions[$i]['kind'] = $kind;
             $functions[$i]['humanKind'] = $humanKind;
         }
     }
     usort($functions, array('webgrind', 'cost_cmp'));
     $remainingCost = $shownTotal * webgrind::get('showFraction');
     $result['functions'] = array();
     foreach ($functions as $function) {
         $remainingCost -= $function['summedSelfCost'];
         $result['functions'][] = $function;
         if ($remainingCost < 0) {
             break;
         }
     }
     $result['summedInvocationCount'] = $reader->getFunctionCount();
     $result['summedRunTime'] = $reader->formatCost($reader->getHeader('summary'), 'msec');
     $result['dataFile'] = $dataFile;
     $result['invokeUrl'] = $reader->getHeader('cmd');
     $result['runs'] = $reader->getHeader('runs');
     $result['breakdown'] = $breakdown;
     $result['mtime'] = date(Kohana::config('webgrind.dateFormat'), filemtime(webgrind::xdebugOutputDir() . $dataFile));
     echo json_encode($result);
 }