mageno核心类-Varien_Profiler
来源:互联网 发布:莞城金域名苑 编辑:程序博客网 时间:2024/05/18 19:37
Varien_Profiler类是magento用来监测程序执行时间和内存使用情况的类
这个类的使用非常简单,所有方法都是static,要看具体怎么使用,请参考另一篇博文:http://blog.csdn.net/clh604/article/details/8541211
Varien_Profiler::start('self::app::init'); self::$_app->init($code, $type, $options);//初始化APPVarien_Profiler::stop('self::app::init');
类的源码:/lib/Varien/Profiler.php
class Varien_Profiler{ /** * Timers for code profiling * * @var array */ static private $_timers = array(); static private $_enabled = false; static private $_memory_get_usage = false; public static function enable() { self::$_enabled = true; self::$_memory_get_usage = function_exists('memory_get_usage'); } public static function disable() { self::$_enabled = false; } public static function reset($timerName) { self::$_timers[$timerName] = array( 'start'=>false, 'count'=>0, 'sum'=>0, 'realmem'=>0, 'emalloc'=>0, ); } public static function resume($timerName) { if (!self::$_enabled) { return; } if (empty(self::$_timers[$timerName])) { self::reset($timerName); } if (self::$_memory_get_usage) { self::$_timers[$timerName]['realmem_start'] = memory_get_usage(true); self::$_timers[$timerName]['emalloc_start'] = memory_get_usage(); } self::$_timers[$timerName]['start'] = microtime(true); self::$_timers[$timerName]['count'] ++; } public static function start($timerName) { self::resume($timerName); } public static function pause($timerName) { if (!self::$_enabled) { return; } $time = microtime(true); // Get current time as quick as possible to make more accurate calculations if (empty(self::$_timers[$timerName])) { self::reset($timerName); } if (false!==self::$_timers[$timerName]['start']) { self::$_timers[$timerName]['sum'] += $time-self::$_timers[$timerName]['start']; self::$_timers[$timerName]['start'] = false; if (self::$_memory_get_usage) { self::$_timers[$timerName]['realmem'] += memory_get_usage(true)-self::$_timers[$timerName]['realmem_start']; self::$_timers[$timerName]['emalloc'] += memory_get_usage()-self::$_timers[$timerName]['emalloc_start']; } } } public static function stop($timerName) { self::pause($timerName); } public static function fetch($timerName, $key='sum') { if (empty(self::$_timers[$timerName])) { return false; } elseif (empty($key)) { return self::$_timers[$timerName]; } switch ($key) { case 'sum': $sum = self::$_timers[$timerName]['sum']; if (self::$_timers[$timerName]['start']!==false) { $sum += microtime(true)-self::$_timers[$timerName]['start']; } return $sum; case 'count': $count = self::$_timers[$timerName]['count']; return $count; case 'realmem': if (!isset(self::$_timers[$timerName]['realmem'])) { self::$_timers[$timerName]['realmem'] = -1; } return self::$_timers[$timerName]['realmem']; case 'emalloc': if (!isset(self::$_timers[$timerName]['emalloc'])) { self::$_timers[$timerName]['emalloc'] = -1; } return self::$_timers[$timerName]['emalloc']; default: if (!empty(self::$_timers[$timerName][$key])) { return self::$_timers[$timerName][$key]; } } return false; } public static function getTimers() { return self::$_timers; } /** * Output SQl Zend_Db_Profiler * */ public static function getSqlProfiler($res) { if(!$res){ return ''; } $out = ''; $profiler = $res->getProfiler(); if($profiler->getEnabled()) { $totalTime = $profiler->getTotalElapsedSecs(); $queryCount = $profiler->getTotalNumQueries(); $longestTime = 0; $longestQuery = null; foreach ($profiler->getQueryProfiles() as $query) { if ($query->getElapsedSecs() > $longestTime) { $longestTime = $query->getElapsedSecs(); $longestQuery = $query->getQuery(); } } $out .= 'Executed ' . $queryCount . ' queries in ' . $totalTime . ' seconds' . "<br>"; $out .= 'Average query length: ' . $totalTime / $queryCount . ' seconds' . "<br>"; $out .= 'Queries per second: ' . $queryCount / $totalTime . "<br>"; $out .= 'Longest query length: ' . $longestTime . "<br>"; $out .= 'Longest query: <br>' . $longestQuery . "<hr>"; } return $out; }}
- mageno核心类-Varien_Profiler
- mageno安装
- Mageno常用Code总结
- 核心类
- 核心类
- 核心类
- 核心类
- junit的核心类
- JAVAMAIL核心类介绍
- symfony04:Symfony核心类
- struts的核心类
- c#外挂核心类
- Struts的核心类
- lucene核心类详解
- lucene 核心索引类
- magento核心类Varien_Object
- magento核心类Varien_Object
- Javascript的核心类
- 防止变量重复定义、头文件重复包含、嵌套包含
- wpf中全屏的设置
- jQuery选择器(2)
- 织梦(dedecms)仿站教程第九讲—通用头部(五)导航栏
- OpenCV 视频监控(Video Surveilance)的算法体系
- mageno核心类-Varien_Profiler
- Lucene3.6入门实例
- Android中图片缩放方法!!!
- 【2013-1-25】算法每日一题:求非自身所有数乘积后取模
- asp.net vs2010中使用 ef code first 详解
- 我们在囧途之裁员篇
- HTTP中POST和GET的区别
- 2013自我学习计划
- Ajax方式提交带文件上传的表单