mirror of
				https://github.com/Icinga/icingaweb2.git
				synced 2025-10-31 11:24:51 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			159 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			159 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /**
 | |
|  * Zend Framework
 | |
|  *
 | |
|  * LICENSE
 | |
|  *
 | |
|  * This source file is subject to the new BSD license that is bundled
 | |
|  * with this package in the file LICENSE.txt.
 | |
|  * It is also available through the world-wide-web at this URL:
 | |
|  * http://framework.zend.com/license/new-bsd
 | |
|  * If you did not receive a copy of the license and are unable to
 | |
|  * obtain it through the world-wide-web, please send an email
 | |
|  * to license@zend.com so we can send you a copy immediately.
 | |
|  *
 | |
|  * @category   Zend
 | |
|  * @package    Zend_Db
 | |
|  * @subpackage Profiler
 | |
|  * @copyright  Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 | |
|  * @license    http://framework.zend.com/license/new-bsd     New BSD License
 | |
|  * @version    $Id$
 | |
|  */
 | |
| 
 | |
| /** Zend_Db_Profiler */
 | |
| 
 | |
| /** Zend_Wildfire_Plugin_FirePhp */
 | |
| 
 | |
| /** Zend_Wildfire_Plugin_FirePhp_TableMessage */
 | |
| 
 | |
| /**
 | |
|  * Writes DB events as log messages to the Firebug Console via FirePHP.
 | |
|  *
 | |
|  * @category   Zend
 | |
|  * @package    Zend_Db
 | |
|  * @subpackage Profiler
 | |
|  * @copyright  Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
 | |
|  * @license    http://framework.zend.com/license/new-bsd     New BSD License
 | |
|  */
 | |
| class Zend_Db_Profiler_Firebug extends Zend_Db_Profiler
 | |
| {
 | |
|     /**
 | |
|      * The original label for this profiler.
 | |
|      * @var string
 | |
|      */
 | |
|     protected $_label = null;
 | |
| 
 | |
|     /**
 | |
|      * The label template for this profiler
 | |
|      * @var string
 | |
|      */
 | |
|     protected $_label_template = '%label% (%totalCount% @ %totalDuration% sec)';
 | |
| 
 | |
|     /**
 | |
|      * The message envelope holding the profiling summary
 | |
|      * @var Zend_Wildfire_Plugin_FirePhp_TableMessage
 | |
|      */
 | |
|     protected $_message = null;
 | |
| 
 | |
|     /**
 | |
|      * The total time taken for all profiled queries.
 | |
|      * @var float
 | |
|      */
 | |
|     protected $_totalElapsedTime = 0;
 | |
| 
 | |
|     /**
 | |
|      * Constructor
 | |
|      *
 | |
|      * @param string $label OPTIONAL Label for the profiling info.
 | |
|      * @return void
 | |
|      */
 | |
|     public function __construct($label = null)
 | |
|     {
 | |
|         $this->_label = $label;
 | |
|         if(!$this->_label) {
 | |
|             $this->_label = 'Zend_Db_Profiler_Firebug';
 | |
|         }
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Enable or disable the profiler.  If $enable is false, the profiler
 | |
|      * is disabled and will not log any queries sent to it.
 | |
|      *
 | |
|      * @param  boolean $enable
 | |
|      * @return Zend_Db_Profiler Provides a fluent interface
 | |
|      */
 | |
|     public function setEnabled($enable)
 | |
|     {
 | |
|         parent::setEnabled($enable);
 | |
| 
 | |
|         if ($this->getEnabled()) {
 | |
| 
 | |
|             if (!$this->_message) {
 | |
|                 $this->_message = new Zend_Wildfire_Plugin_FirePhp_TableMessage($this->_label);
 | |
|                 $this->_message->setBuffered(true);
 | |
|                 $this->_message->setHeader(array('Time','Event','Parameters'));
 | |
|                 $this->_message->setDestroy(true);
 | |
|                 $this->_message->setOption('includeLineNumbers', false);
 | |
|                 Zend_Wildfire_Plugin_FirePhp::getInstance()->send($this->_message);
 | |
|             }
 | |
| 
 | |
|         } else {
 | |
| 
 | |
|             if ($this->_message) {
 | |
|                 $this->_message->setDestroy(true);
 | |
|                 $this->_message = null;
 | |
|             }
 | |
| 
 | |
|         }
 | |
| 
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Intercept the query end and log the profiling data.
 | |
|      *
 | |
|      * @param  integer $queryId
 | |
|      * @throws Zend_Db_Profiler_Exception
 | |
|      * @return void
 | |
|      */
 | |
|     public function queryEnd($queryId)
 | |
|     {
 | |
|         $state = parent::queryEnd($queryId);
 | |
| 
 | |
|         if (!$this->getEnabled() || $state == self::IGNORED) {
 | |
|             return;
 | |
|         }
 | |
| 
 | |
|         $this->_message->setDestroy(false);
 | |
| 
 | |
|         $profile = $this->getQueryProfile($queryId);
 | |
| 
 | |
|         $this->_totalElapsedTime += $profile->getElapsedSecs();
 | |
| 
 | |
|         $this->_message->addRow(array((string)round($profile->getElapsedSecs(),5),
 | |
|                                       $profile->getQuery(),
 | |
|                                       ($params=$profile->getQueryParams())?$params:null));
 | |
| 
 | |
|         $this->updateMessageLabel();
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Update the label of the message holding the profile info.
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     protected function updateMessageLabel()
 | |
|     {
 | |
|         if (!$this->_message) {
 | |
|             return;
 | |
|         }
 | |
|         $this->_message->setLabel(str_replace(array('%label%',
 | |
|                                                     '%totalCount%',
 | |
|                                                     '%totalDuration%'),
 | |
|                                               array($this->_label,
 | |
|                                                     $this->getTotalNumQueries(),
 | |
|                                                     (string)round($this->_totalElapsedTime,5)),
 | |
|                                               $this->_label_template));
 | |
|     }
 | |
| }
 |