获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)


Posted in PHP onJune 03, 2013

THINKphp里面有调试运行状态的效果:

Process:0.2463s (Load:0.0003s Init:0.0010s Exec:0.1095s Template:0.1355s )|DB:13 queries 0 writes| Cache:2 gets,0 writes|UseMem:415 kb|LoadFile:20|CallFun:63,1370

代表的含义:

运行信息: 整体执行时间0.2463s ( 加载:0.0003s 初始化:0.0010s 执行:0.1095s 模板:0.1355s ) | 数据库 :13次读操作 0次写操作 | 缓存:2次读取,0次写入 | 使用内存:415 kb | 加载文件:20 | 函数调用:63(自定义),1370(内置)

下面来分析一下这些数据是怎么获取到的?

PHP获取页面执行时间:

/** 
* 得到当前时间 
*/ 
function getMicrotime() { list ($usec, $sec) = explode(" ", microtime()); 
return ((float) $usec + (float) $sec); 
}

使用:上面的方法可以获取当前时间,计算页面执行时间可以在程序开头和结尾出分别执行该方法,最后时间差就是页面执行的时间,原理很简单。

获取数据库读写次数

在数据库插入和读取的时候设置一个全局变量,每次执行成功一次$i++一次,获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp) ,这是tp里面db类的方法,而N的方法是:自动累计的一个方法。

同理缓存也是这样计算出来的

内存的开销
memory_get_usage可以获取当前内存的消耗量,可以在程序开始和结尾分别调用,差值就是内存的开销

加载文件的数量
get_included_files:Gets the names of all files that have been included using include, include_once, require or require_once.

也就是可以获取到所有的include,require的文件数,返回引入文件的数组:

官网例子":

<?php 
// This file is abc.php include 'test1.php'; 
include_once 'test2.php'; 
require 'test3.php'; 
require_once 'test4.php'; 
$included_files = get_included_files(); 
foreach ($included_files as $filename) { 
echo "$filenamen"; 
} 
?>

返回的结果是:

abc.php
test1.php
test2.php
test3.php
test4.php

函数调用方法
第一个看这个,感觉是在每个方法里面调用时自动+1.但是感觉不大可能,貌似这个每个方法里写不靠谱,这群里讨论半天,最后发现php的一个函数:

get_defined_functions返回引入PHP文件的所有方法的array格式,包括自定义的,内置的。

引入官网的一个例子:

<?php 
function myrow($id, $data) 
{ 
return "<tr><th>$id</th><td>$data</td></tr>n"; 
} 
$arr = get_defined_functions(); 
print_r($arr); 
?>

结果是:

Array 
( 
[internal] => Array 
( 
[0] => zend_version 
[1] => func_num_args 
[2] => func_get_arg 
[3] => func_get_args 
[4] => strlen 
[5] => strcmp 
[6] => strncmp 
... 
[750] => bcscale 
[751] => bccomp 
) [user] => Array 
( 
[0] => myrow 
) 
)

user为自定义方法,internal为内置方法数组。

引申:

get_defined_constants 获取定义所有常量的数组
get_defined_functions 获取定义所有函数的数组
get_defined_vars 获取定义所有变量的数组
get_declared_classes 返回已经定义的类的数组

PHP 相关文章推荐
php 应用程序安全防范技术研究
Sep 25 PHP
浅谈PHP与C#的值类型指向区别的详解
May 21 PHP
PHP生成验证码时“图像因其本身有错无法显示”的解决方法
Aug 07 PHP
php中读写文件与读写数据库的效率比较分享
Oct 19 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
PHP中COOKIES使用示例
Jul 26 PHP
php自动识别文字编码并转换为目标编码的方法
Aug 08 PHP
php解析xml 的四种简单方法(附实例)
Jul 11 PHP
CI框架实现框架前后端分离的方法详解
Dec 30 PHP
php实现购物车产品删除功能(2)
Jul 23 PHP
PHP实现通过文本文件统计页面访问量功能示例
Feb 13 PHP
PHP数据对象映射模式实例分析
Mar 29 PHP
php变量作用域的深入解析
Jun 03 #PHP
CURL的学习和应用(附多线程实现)
Jun 03 #PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 #PHP
PHP flush()与ob_flush()的区别详解
Jun 03 #PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 #PHP
PHP Cookie的使用教程详解
Jun 03 #PHP
PHP register_shutdown_function函数的深入解析
Jun 03 #PHP
You might like
用php实现的下载css文件中的图片的代码
2010/02/08 PHP
Windows下XDebug 手工配置与使用说明
2010/07/11 PHP
PHP创建桌面快捷方式的实例代码
2014/02/17 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
PHP实现的统计数据功能详解
2016/12/06 PHP
PHP排序算法之冒泡排序(Bubble Sort)实现方法详解
2018/04/20 PHP
Yii框架连表查询操作示例
2019/09/06 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
Yii框架小部件(Widgets)用法实例详解
2020/05/15 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
JavaScript中几个重要的属性(this、constructor、prototype)介绍
2013/05/19 Javascript
JS 仿腾讯发表微博的效果代码
2013/12/25 Javascript
js点击事件链接的问题解决
2014/04/25 Javascript
PHP PDO操作总结
2014/11/17 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
JS自定义函数对web前端上传的文件进行类型大小判断
2016/10/19 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
详解基于Node.js的HTTP/2 Server实践
2018/05/31 Javascript
详解SPA中前端路由基本原理与实现方式
2018/09/12 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
js实现继承的方法及优缺点总结
2019/05/08 Javascript
JavaScript基于用户照片姓名生成海报
2020/05/29 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
python 输出一个两行字符的变量
2009/02/05 Python
Python控制多进程与多线程并发数总结
2016/10/26 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】
2019/03/30 Python
python实现飞机大战项目
2020/03/11 Python
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
德国专业木制品经销商:Holz-Direkt24
2019/12/26 全球购物
Perfume’s Club美国官网:西班牙第一家在线美容店
2020/06/10 全球购物
《乞巧》教学反思
2014/02/27 职场文书
红十字会救护培训简讯
2015/07/20 职场文书
如果用一句诗总结你的上半年,你会用哪句呢?
2019/07/16 职场文书
新手入门Mysql--概念
2021/06/18 MySQL