Debug.class.php 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2006-2012 http://thinkphp.cn All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )
  8. // +----------------------------------------------------------------------
  9. // | Author: liu21st <liu21st@gmail.com>
  10. // +----------------------------------------------------------------------
  11. /**
  12. * 系统调试类
  13. * @category Think
  14. * @package Think
  15. * @subpackage Util
  16. * @author liu21st <liu21st@gmail.com>
  17. */
  18. class Debug {
  19. static private $marker = array();
  20. /**
  21. * 标记调试位
  22. * @access public
  23. * @param string $name 要标记的位置名称
  24. * @return void
  25. */
  26. static public function mark($name) {
  27. self::$marker['time'][$name] = microtime(TRUE);
  28. if(MEMORY_LIMIT_ON) {
  29. self::$marker['mem'][$name] = memory_get_usage();
  30. self::$marker['peak'][$name] = function_exists('memory_get_peak_usage')?memory_get_peak_usage(): self::$marker['mem'][$name];
  31. }
  32. }
  33. /**
  34. * 区间使用时间查看
  35. * @access public
  36. * @param string $start 开始标记的名称
  37. * @param string $end 结束标记的名称
  38. * @param integer $decimals 时间的小数位
  39. * @return integer
  40. */
  41. static public function useTime($start,$end,$decimals = 6) {
  42. if ( ! isset(self::$marker['time'][$start]))
  43. return '';
  44. if ( ! isset(self::$marker['time'][$end]))
  45. self::$marker['time'][$end] = microtime(TRUE);
  46. return number_format(self::$marker['time'][$end] - self::$marker['time'][$start], $decimals);
  47. }
  48. /**
  49. * 区间使用内存查看
  50. * @access public
  51. * @param string $start 开始标记的名称
  52. * @param string $end 结束标记的名称
  53. * @return integer
  54. */
  55. static public function useMemory($start,$end) {
  56. if(!MEMORY_LIMIT_ON)
  57. return '';
  58. if ( ! isset(self::$marker['mem'][$start]))
  59. return '';
  60. if ( ! isset(self::$marker['mem'][$end]))
  61. self::$marker['mem'][$end] = memory_get_usage();
  62. return number_format((self::$marker['mem'][$end] - self::$marker['mem'][$start])/1024);
  63. }
  64. /**
  65. * 区间使用内存峰值查看
  66. * @access public
  67. * @param string $start 开始标记的名称
  68. * @param string $end 结束标记的名称
  69. * @return integer
  70. */
  71. static function getMemPeak($start,$end) {
  72. if(!MEMORY_LIMIT_ON)
  73. return '';
  74. if ( ! isset(self::$marker['peak'][$start]))
  75. return '';
  76. if ( ! isset(self::$marker['peak'][$end]))
  77. self::$marker['peak'][$end] = function_exists('memory_get_peak_usage')?memory_get_peak_usage(): memory_get_usage();
  78. return number_format(max(self::$marker['peak'][$start],self::$marker['peak'][$end])/1024);
  79. }
  80. }