ForwardFW
[ class tree: ForwardFW ] [ index: ForwardFW ] [ all elements ]

Source for file Timer.php

Documentation is available at Timer.php

  1. <?php
  2. declare(encoding "utf-8");
  3. /**
  4.  * This file is part of ForwardFW a web application framework.
  5.  *
  6.  * This library is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * This library is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public
  17.  * License along with this library; if not, write to the Free Software
  18.  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  *
  20.  * PHP version 5
  21.  *
  22.  * @category   Object
  23.  * @package    ForwardFW
  24.  * @subpackage Object
  25.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  26.  * @copyright  2009-2010 The Authors
  27.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  28.  * @version    SVN: $Id: $
  29.  * @link       http://forwardfw.sourceforge.net
  30.  * @since      File available since Release 0.0.1
  31.  */
  32.  
  33. require_once 'ForwardFW/Object.php';
  34.  
  35. /**
  36.  * Model for mesuring time, can add hints with meantime
  37.  *
  38.  * @category   Object
  39.  * @package    ForwardFW
  40.  * @subpackage Object
  41.  * @author     Alexander Opitz <opitz.alexander@primacom.net>
  42.  * @license    http://www.gnu.org/copyleft/gpl.html GNU General Public License
  43.  * @link       http://forwardfw.sourceforge.net
  44.  */
  45. {
  46.     /**
  47.      * Name of this Timer for output
  48.      *
  49.      * @var string 
  50.      */
  51.     private $strName = '';
  52.  
  53.     /**
  54.      * Start time of this timer, microsecond
  55.      *
  56.      * @var float 
  57.      */
  58.     private $nTimeStart = -1;
  59.  
  60.     /**
  61.      * Endtime of this timer, microsecond
  62.      *
  63.      * @var float 
  64.      */
  65.     private $nTimeStop = -1;
  66.  
  67.     /**
  68.      * List of informational entries
  69.      *
  70.      * @var array of string
  71.      */
  72.     private $arEntries = array();
  73.  
  74.     /**
  75.      * Starts the timer
  76.      *
  77.      * @param string $strName Name to identify Timer on output
  78.      *
  79.      * @return void 
  80.      */
  81.     public function __construct($strName '')
  82.     {
  83.         parent::__construct();
  84.         $this->strName = $strName;
  85.         $this->nTimeStart = microtime(true);
  86.     }
  87.  
  88.     /**
  89.      * Set new start time and resets entries
  90.      *
  91.      * @return ForwardFW_Object_Timer The timer object
  92.      */
  93.     public function reStart()
  94.     {
  95.         $this->nTimeStart = microtime(true);
  96.         $this->nTimeStop = -1;
  97.         $this->arEntries = array();
  98.  
  99.         return $this;
  100.     }
  101.  
  102.     /**
  103.      * Adds an entry for information output with elapsed time.
  104.      *
  105.      * @param string $strEntry The string to add.
  106.      *
  107.      * @return ForwardFW_Object_Timer 
  108.      */
  109.     public function addEntry($strEntry)
  110.     {
  111.         $strElapsedTime $this->getElapsedTime();
  112.         array_push($this->arEntries$strElapsedTime ': ' $strEntry);
  113.  
  114.         return $this;
  115.     }
  116.  
  117.     /**
  118.      * Give elapsed time since start of timer
  119.      *
  120.      * @return float Time in ms.
  121.      */
  122.     public function getElapsedTime()
  123.     {
  124.         $nNow microtime(true);
  125.         return $this->getTimeDifference($this->nTimeStart$nNow);
  126.     }
  127.  
  128.     /**
  129.      * Give difference between microtimes in ms.
  130.      *
  131.      * @param float $nTimeStart Starttime for difference
  132.      * @param float $nTimeStop  Endtime for difference
  133.      *
  134.      * @return float Time in ms.
  135.      */
  136.     public static function getTimeDifference($nTimeStart$nTimeStop)
  137.     {
  138.         return ($nTimeStop $nTimeStart1000;
  139.     }
  140.  
  141.     /**
  142.      * Stops the timer
  143.      *
  144.      * @return ForwardFW_Object_Timer 
  145.      */
  146.     public function stop()
  147.     {
  148.         $this->nTimeStop = microtime(true);
  149.         return $this;
  150.     }
  151.  
  152.  
  153.     /**
  154.      * Gives time between start and stop.
  155.      *
  156.      * @return float Time in ms.
  157.      */
  158.     protected function getStopTime()
  159.     {
  160.         return $this->getTimeDifference($this->nTimeStart$this->nTimeStop);
  161.     }
  162.  
  163.     /**
  164.      * Return execution information
  165.      *
  166.      * @return string execution info
  167.      */
  168.     public function toString()
  169.     {
  170.         $strEntry implode(', '$this->arEntries);
  171.         return '<br />' $this->getStopTime(' ms'
  172.             . ' - ' $this->strName
  173.             . ($strEntry != '' ' (' $strEntry ')' '');
  174.     }
  175.  
  176.     /**
  177.      * Gives the array with all entries till yet.
  178.      *
  179.      * @return array of String with entries.
  180.      */
  181.     function getEntries()
  182.     {
  183.         return $this->arEntries;
  184.     }
  185. }
  186.  
  187. ?>

Documentation generated on Sun, 30 Jan 2011 20:46:48 +0100 by phpDocumentor 1.4.3