Viewing file: Query.php (4.58 KB) -rw-rw-rw- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
<?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-2009 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License * @version $Id: Query.php 16203 2009-06-21 18:56:17Z thomas $ */
/** * @category Zend * @package Zend_Db * @subpackage Profiler * @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com) * @license http://framework.zend.com/license/new-bsd New BSD License */ class Zend_Db_Profiler_Query {
/** * SQL query string or user comment, set by $query argument in constructor. * * @var string */ protected $_query = '';
/** * One of the Zend_Db_Profiler constants for query type, set by $queryType argument in constructor. * * @var integer */ protected $_queryType = 0;
/** * Unix timestamp with microseconds when instantiated. * * @var float */ protected $_startedMicrotime = null;
/** * Unix timestamp with microseconds when self::queryEnd() was called. * * @var integer */ protected $_endedMicrotime = null;
/** * @var array */ protected $_boundParams = array();
/** * @var array */
/** * Class constructor. A query is about to be started, save the query text ($query) and its * type (one of the Zend_Db_Profiler::* constants). * * @param string $query * @param integer $queryType * @return void */ public function __construct($query, $queryType) { $this->_query = $query; $this->_queryType = $queryType; // by default, and for backward-compatibility, start the click ticking $this->start(); }
/** * Clone handler for the query object. * @return void */ public function __clone() { $this->_boundParams = array(); $this->_endedMicrotime = null; $this->start(); }
/** * Starts the elapsed time click ticking. * This can be called subsequent to object creation, * to restart the clock. For instance, this is useful * right before executing a prepared query. * * @return void */ public function start() { $this->_startedMicrotime = microtime(true); }
/** * Ends the query and records the time so that the elapsed time can be determined later. * * @return void */ public function end() { $this->_endedMicrotime = microtime(true); }
/** * Returns true if and only if the query has ended. * * @return boolean */ public function hasEnded() { return $this->_endedMicrotime !== null; }
/** * Get the original SQL text of the query. * * @return string */ public function getQuery() { return $this->_query; }
/** * Get the type of this query (one of the Zend_Db_Profiler::* constants) * * @return integer */ public function getQueryType() { return $this->_queryType; }
/** * @param string $param * @param mixed $variable * @return void */ public function bindParam($param, $variable) { $this->_boundParams[$param] = $variable; }
/** * @param array $param * @return void */ public function bindParams(array $params) { if (array_key_exists(0, $params)) { array_unshift($params, null); unset($params[0]); } foreach ($params as $param => $value) { $this->bindParam($param, $value); } }
/** * @return array */ public function getQueryParams() { return $this->_boundParams; }
/** * Get the elapsed time (in seconds) that the query ran. * If the query has not yet ended, false is returned. * * @return float|false */ public function getElapsedSecs() { if (null === $this->_endedMicrotime) { return false; }
return $this->_endedMicrotime - $this->_startedMicrotime; } }
|