七)CodeIgniter源码分析之Benchmark.php

 1 <?php  if ( ! defined(‘BASEPATH‘)) exit(‘No direct script access allowed‘);
 2 // ------------------------------------------------------------------------
 3
 4 /**
 5  * CodeIgniter Benchmark Class
 6  */
 7 class CI_Benchmark {
 8
 9  /**
10   * List of all benchmark markers and when they were added
11   */
12  var $marker = array();
13
14  // --------------------------------------------------------------------
15
16  /**
17   * Set a benchmark marker
18   */
19  function mark($name)
20  {
21   //这个方法其实很简单,就是在程序的任意地方调用地方法时,会记录当前的时间点。
22   $this->marker[$name] = microtime();
23  }
24
25  // --------------------------------------------------------------------
26
27  /**
28   * Calculates the time difference between two marked points.
29   * 计算出两个时间点之间的时间。
30   */
31  function elapsed_time($point1 = ‘‘, $point2 = ‘‘, $decimals = 4)
32  {
33   /*
34    * 如果没有给出明确的时间点,那么会计算出整个程序运行的时间。
35    * 怎么可以做到计算出整个程序的运行时间的呢?其实执行此计算的是Output组件。
36    * 而调用Benchmark::elapsed_time();(无参数)的时候,实质上先返回的并不是
37    * 整个程序运行的时间,也不可能做到,实质返回的是一个{elapsed_time}标签,然后
38    * Output在处理输出的时候,再计算出整个程序运行时间,因为处理输出阶段程序可以视
39    * 为处于最后阶段,于是可以近似计算出总时间,然后把输出中的{elapsed_time}替换掉。
40    * 下面的memory_usage()原理相同。
41    * 详见:core/Output.php 中的_display()方法。
42    */
43   if ($point1 == ‘‘)
44   {
45    return ‘{elapsed_time}‘;
46   }
47
48   if ( ! isset($this->marker[$point1]))
49   {
50    return ‘‘;
51   }
52
53   if ( ! isset($this->marker[$point2]))
54   {
55    $this->marker[$point2] = microtime();
56   }
57
58   //这里为什么要用到list,是因为microtime();返回值是“msec sec”的格式。
59   list($sm, $ss) = explode(‘ ‘, $this->marker[$point1]);
60   list($em, $es) = explode(‘ ‘, $this->marker[$point2]);
61
62   return number_format(($em + $es) - ($sm + $ss), $decimals);
63  }
64
65  // --------------------------------------------------------------------
66
67  /**
68   * Memory Usage
69   */
70  function memory_usage()
71  {
72   //Output::_display();
73   return ‘{memory_usage}‘;
74  }
75
76 }
时间: 2024-12-22 18:23:52

七)CodeIgniter源码分析之Benchmark.php的相关文章

三)CodeIgniter源码分析之Common.php

1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 2 3 // ------------------------------------------------------------------------ 4 5 /** 6 * Common Functions 7 */ 8 9 /** 10 * 为什么还要定义这些全局函数呢?比如说,下面有很多函数,如get_config().confi

二)CodeIgniter源码分析之CodeIgniter.php

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); /** * 上面: * 这个BASEPATH,就是在入口文件(index.php)里面定义的那个BASEPATH- * 如果没有定义BASEPATH,那么直接退出,下面程序都不执行.其实除了入口文件index.php开头没有这句话之外,所有文件都会有这句话 * 也就是说,所有文件都不能单独运行,一定是index.php在运行过程中把这些文件通 *

CodeIgniter源码分析之index.php

<?php /* *--------------------------------------------------------------- * APPLICATION ENVIRONMENT *--------------------------------------------------------------- * * * //配置项目运行的环境,该配置会影响错误报告的显示和配置文件的读取. */ define('ENVIRONMENT', 'development'); /*

十)CodeIgniter源码分析之Output.php

1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 2 3 // ------------------------------------------------------------------------ 4 5 /** 6 * Output Class 7 * 8 * Output组件其实有很多有用的方法,不过一般情况下,你不会直接去用到它们. 9 * 这里主要以Output::_dis

九)CodeIgniter源码分析之Hook.php

1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 2 // ------------------------------------------------------------------------ 3 4 /** 5 * CodeIgniter Hooks Class 6 */ 7 class CI_Hooks { 8 9 /** 10 * Determines wether hook

八)CodeIgniter源码分析之Config.php

1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 2 3 // ------------------------------------------------------------------------ 4 5 /** 6 * CodeIgniter Config Class 7 */ 8 class CI_Config { 9 10 /** 11 * List of all loade

CodeIgniter源码分析(二) 入口文件index.php

1 <?php 2 3 /* 设定环境 */ 4 define('ENVIRONMENT', 'development'); 5 6 if (defined('ENVIRONMENT')) 7 { 8 switch (ENVIRONMENT) 9 { 10 case 'development': 11 error_reporting(E_ALL); 12 break; 13 14 case 'testing': 15 case 'production': 16 error_reporting(0

(一)CodeIgniter源码分析之index.php

<?php /* *--------------------------------------------------------------- * APPLICATION ENVIRONMENT *--------------------------------------------------------------- * * * //配置项目运行的环境,该配置会影响错误报告的显示和配置文件的读取. */ define('ENVIRONMENT', 'development'); /*

十一)CodeIgniter源码分析之Controller.php

1 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); 2 3 /** 4 * CodeIgniter Application Controller Class 5 */ 6 class CI_Controller { 7 8 private static $instance; 9 10 /** 11 * Constructor 12 */ 13 public function __construc