Ejemplo n.º 1
0
 protected function _toHtml()
 {
     if (!$this->_beforeToHtml() || !Mage::getStoreConfig('dev/debug/profiler') || !Mage::helper('core')->isDevAllowed()) {
         return '';
     }
     $timers = Varien_Profiler::getTimers();
     #$out = '<div style="position:fixed;bottom:5px;right:5px;opacity:.1;background:white" onmouseover="this.style.opacity=1" onmouseout="this.style.opacity=.1">';
     #$out = '<div style="opacity:.1" onmouseover="this.style.opacity=1" onmouseout="this.style.opacity=.1">';
     $out = "<a href=\"javascript:void(0)\" onclick=\"\$('profiler_section').style.display=\$('profiler_section').style.display==''?'none':''\">[profiler]</a>";
     $out .= '<div id="profiler_section" style="background:white; display:block">';
     $out .= '<pre>Memory usage: real: ' . memory_get_usage(true) . ', emalloc: ' . memory_get_usage() . '</pre>';
     $out .= '<table border="1" cellspacing="0" cellpadding="2" style="width:auto">';
     $out .= '<tr><th>Code Profiler</th><th>Time</th><th>Cnt</th><th>Emalloc</th><th>RealMem</th></tr>';
     foreach ($timers as $name => $timer) {
         $sum = Varien_Profiler::fetch($name, 'sum');
         $count = Varien_Profiler::fetch($name, 'count');
         $realmem = Varien_Profiler::fetch($name, 'realmem');
         $emalloc = Varien_Profiler::fetch($name, 'emalloc');
         if ($sum < 0.001 && $count < 10 && $emalloc < 10000) {
             continue;
         }
         $out .= '<tr>' . '<td align="left">' . $name . '</td>' . '<td>' . number_format($sum, 4) . '</td>' . '<td align="right">' . $count . '</td>' . '<td align="right">' . number_format($emalloc) . '</td>' . '<td align="right">' . number_format($realmem) . '</td>' . '</tr>';
     }
     $out .= '</table>';
     $out .= '<pre>';
     $out .= print_r(Varien_Profiler::getSqlProfiler(Mage::getSingleton('core/resource')->getConnection('core_write')), 1);
     $out .= '</pre>';
     $out .= '</div>';
     return $out;
 }
Ejemplo n.º 2
0
 public function getTimers()
 {
     $timers = Varien_Profiler::getTimers();
     foreach ($timers as $key => $value) {
         $timers[$key]['sum'] = Varien_Profiler::fetch($key, 'sum');
     }
     uasort($timers, array('self', 'compareTimers'));
     return $timers;
 }
Ejemplo n.º 3
0
 public function logProfiler($filename)
 {
     $timers = Varien_Profiler::getTimers();
     Mage::log('--------------------------------------------------', Zend_Log::DEBUG, $filename);
     Mage::log("Code Profiler\tTime\tCnt\tEmalloc\tRealMem", Zend_Log::DEBUG, $filename);
     foreach ($timers as $name => $timer) {
         $sum = Varien_Profiler::fetch($name, 'sum');
         $count = Varien_Profiler::fetch($name, 'count');
         $realmem = Varien_Profiler::fetch($name, 'realmem');
         $emalloc = Varien_Profiler::fetch($name, 'emalloc');
         if ($sum < 0.001 && $count < 10 && $emalloc < 10000) {
             continue;
         }
         Mage::log(sprintf("%s\t%s\t%s\t%s\t%s", $name, number_format($sum, 4), $count, number_format($emalloc), number_format($realmem)), Zend_Log::DEBUG, $filename);
     }
 }
Ejemplo n.º 4
0
 /**
  * Displays the Varien_Profiler data to the screen.  If it is not enabled, it will 
  * indicate that it is disabled.
  * 
  * @author Ben Robie <*****@*****.**>
  **/
 function _flushProfileData()
 {
     $timers = Varien_Profiler::getTimers();
     foreach ($timers as $name => $timer) {
         $sum = Varien_Profiler::fetch($name, 'sum');
         $count = Varien_Profiler::fetch($name, 'count');
         $realmem = Varien_Profiler::fetch($name, 'realmem');
         $emalloc = Varien_Profiler::fetch($name, 'emalloc');
         if ($sum < 0.001 && $count < 10 && $emalloc < 10000) {
             continue;
         }
         $output[] = array('Code Profiler' => $name, 'Time' => $sum, 'Cnt' => (string) $count, 'Emalloc' => (string) number_format($emalloc), 'RealMem' => (string) number_format($realmem));
     }
     echo Wiz::tableOutput($output);
 }
Ejemplo n.º 5
0
 public function getLabel()
 {
     return number_format(Varien_Profiler::fetch('mage', 'sum'), 2) . ' s';
 }
Ejemplo n.º 6
0
 public function logprofiler($action)
 {
     $suiteLogPath = Mage::getBaseDir('var') . DS . 'log' . DS . 'SagePaySuite';
     $profilerPath = $suiteLogPath . DS . 'PROFILER';
     if (!is_dir($suiteLogPath)) {
         mkdir($suiteLogPath, 0755);
     }
     if (!is_dir($profilerPath)) {
         mkdir($profilerPath, 0755);
     }
     $timers = Varien_Profiler::getTimers();
     $request = $action->getRequest();
     $prefix = $request->getParam('vtxcode', $request->getParam('VPSTxId', null));
     $prefix = $prefix ? $prefix . '_' : '';
     $longest = 0;
     $rows = array();
     foreach ($timers as $name => $timer) {
         $sum = Varien_Profiler::fetch($name, 'sum');
         $count = Varien_Profiler::fetch($name, 'count');
         $realmem = Varien_Profiler::fetch($name, 'realmem');
         $emalloc = Varien_Profiler::fetch($name, 'emalloc');
         if ($sum < 0.001 && $count < 10 && $emalloc < 10000) {
             continue;
         }
         $rows[] = array((string) $name, (string) number_format($sum, 4), (string) $count, (string) number_format($emalloc), (string) number_format($realmem));
         $thislong = strlen($name);
         if ($thislong > $longest) {
             $longest = $thislong;
         }
     }
     //Create table
     $table = new Zend_Text_Table(array('columnWidths' => array($longest, 10, 6, 12, 12), 'decorator' => 'ascii'));
     //Memory
     $preheader = new Zend_Text_Table_Row();
     $real = memory_get_usage(true);
     $emalloc = memory_get_usage();
     $preheader->appendColumn(new Zend_Text_Table_Column('real Memory usage: ' . $real . ' ' . ceil($real / 1048576) . 'MB', 'center', 1));
     $preheader->appendColumn(new Zend_Text_Table_Column('emalloc Memory usage: ' . $emalloc . ' ' . ceil($emalloc / 1048576) . 'MB', 'center', 4));
     $table->appendRow($preheader);
     //Append Header
     $header = new Zend_Text_Table_Row();
     $header->appendColumn(new Zend_Text_Table_Column('Code Profiler', 'center'));
     $header->appendColumn(new Zend_Text_Table_Column('Time', 'center'));
     $header->appendColumn(new Zend_Text_Table_Column('Cnt', 'center'));
     $header->appendColumn(new Zend_Text_Table_Column('Emalloc', 'center'));
     $header->appendColumn(new Zend_Text_Table_Column('RealMem', 'center'));
     $table->appendRow($header);
     foreach ($rows as $row) {
         $table->appendRow($row);
     }
     //SQL profile
     $dbprofile = print_r(Varien_Profiler::getSqlProfiler(Mage::getSingleton('core/resource')->getConnection('core_write')), TRUE);
     $dbprofile = substr($dbprofile, 0, -4);
     $dbprofile = str_replace('<br>', "\n", $dbprofile);
     $preheaderlabel = new Zend_Text_Table_Row();
     $preheaderlabel->appendColumn(new Zend_Text_Table_Column('DATABASE', 'center', 5));
     $table->appendRow($preheaderlabel);
     $preheader = new Zend_Text_Table_Row();
     $preheader->appendColumn(new Zend_Text_Table_Column($dbprofile, 'left', 5));
     $table->appendRow($preheader);
     //Request
     $rqlabel = new Zend_Text_Table_Row();
     $rqlabel->appendColumn(new Zend_Text_Table_Column('REQUEST', 'center', 5));
     $table->appendRow($rqlabel);
     $inforqp = new Zend_Text_Table_Row();
     $inforqp->appendColumn(new Zend_Text_Table_Column($this->_filterRequest($request), 'left', 5));
     $table->appendRow($inforqp);
     $date = Mage::getModel('core/date')->date('Y-m-d\\.H-i-s');
     $file = new SplFileObject($profilerPath . DS . $prefix . $date . '_' . $action->getFullActionName() . '.txt', 'w');
     $file->fwrite($table);
 }
Ejemplo n.º 7
0
 /**
  * 
  * @param string $timerName
  * @param string $key			key from the timer entry.  default is 'sum' which will return an integer
  * @return mixed depending on $key
  */
 public function fetch($timerName, $key = 'sum')
 {
     return Varien_Profiler::fetch($timerName, $key);
 }
Ejemplo n.º 8
0
 /**
  * The main loop
  *
  * @return void
  * 
  **/
 public function startConsole()
 {
     require_once 'ShallowParser.php';
     $parser = new Boris_ShallowParser();
     $buf = '';
     $prompt = '>> ';
     // Oh so infinite
     for (;;) {
         // Read the line from the CLI. If we haven't yet terminated the current statement,
         // add an asterisk to the prompt as a little visual hint
         $line = readline($buf == '' ? $prompt : str_pad('?> ', strlen($prompt), ' ', STR_PAD_LEFT));
         // Add to the history
         if ($line == 'clear') {
             $this->clear();
             continue;
         }
         readline_add_history($line);
         if ($line === false) {
             break;
         }
         $buf .= $line;
         if ($this->profiling) {
             Varien_Profiler::reset('test');
             Varien_Profiler::start('test');
         }
         if ($this->database) {
             $res = Mage::getSingleton('core/resource')->getConnection('core_read');
             $profiler = $res->getProfiler();
             $profiler->setEnabled(true);
             $profiler->clear();
         }
         // This is some clever stuff from Boris. It parses the current command
         // and finds out what the heck is going on in there and if it's finished
         // yet.
         if ($statements = $parser->statements($buf)) {
             $buf = '';
             $fromglobalfunction = false;
             // Then try each statement
             foreach ($statements as $stmt) {
                 try {
                     // The exciting bit
                     $result = eval($stmt);
                     if ($result !== 'fromglobalfunction') {
                         $this->output($result);
                     } else {
                         $fromglobalfunction = true;
                     }
                 } catch (Exception $e) {
                     $this->out("! " . $e->getMessage(), 'red');
                     continue;
                 }
             }
             if ($this->profiling) {
                 Varien_Profiler::stop('test');
             }
             if ($this->database) {
                 if ($profiler->getEnabled()) {
                     $totalTime = $profiler->getTotalElapsedSecs();
                     $queryCount = $profiler->getTotalNumQueries();
                     $longestTime = 0;
                     $longestQuery = null;
                     if ($queryCount) {
                         foreach ($profiler->getQueryProfiles() as $query) {
                             if ($query->getElapsedSecs() > $longestTime) {
                                 $longestTime = $query->getElapsedSecs();
                                 $this->out($query->getQuery(), "yellow", null, false);
                                 $this->outTime($query->getElapsedSecs());
                             }
                         }
                     }
                 }
             }
             if ($this->profiling && !$fromglobalfunction) {
                 $this->outTime(Varien_Profiler::fetch('test'), "Duration: ");
             }
         }
     }
 }