获取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 PDO中文乱码解决办法
Jul 20 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
Nov 10 PHP
CI框架中通过hook的方式实现简单的权限控制
Jan 07 PHP
php不使用copy()函数复制文件的方法
Mar 13 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
Dec 31 PHP
在WordPress中获取数据库字段内容和添加主题设置菜单
Jan 11 PHP
php组合排序简单实现方法
Oct 15 PHP
thinkphp框架page类与bootstrap分页(美化)
Jun 25 PHP
PHP ADODB生成HTML表格函数rs2html功能【附错误处理函数用法】
May 29 PHP
解决Laravel 不能创建 migration 的问题
Oct 09 PHP
Laravel 框架返回状态拦截代码
Oct 18 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
域名和cookie问题(域名后缀)
2012/10/10 PHP
PHP实现负载均衡session共享redis缓存操作示例
2018/08/22 PHP
PHP实现页面静态化深入讲解
2021/03/04 PHP
IE Firefox 使用自定义标签的区别
2009/10/15 Javascript
jQuery学习笔记之jQuery的事件
2010/12/22 Javascript
Jquery绑定事件(bind和live的区别介绍)
2013/08/23 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
javascript实现字符串反转的方法
2015/02/05 Javascript
js获取本机操作系统类型的两种方法
2015/12/19 Javascript
jQuery插件Validate实现自定义表单验证
2016/01/18 Javascript
值得分享的JavaScript实现图片轮播组件
2016/11/21 Javascript
JavaScript Base64 作为文件上传的实例代码解析
2017/02/14 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
bootstrap table sum总数量统计实现方法
2017/10/29 Javascript
详解vue.js下引入百度地图jsApi的两种方法
2018/07/27 Javascript
vue自定义底部导航栏Tabbar的实现代码
2018/09/03 Javascript
引入外部js脚本加载慢与页面白屏问题的解决
2018/12/10 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
vue悬浮可拖拽悬浮按钮的实例代码
2019/08/20 Javascript
微信小程序通过一个json实现分享朋友圈图片
2019/09/03 Javascript
javascript Canvas动态粒子连线
2020/01/01 Javascript
Python中的面向对象编程详解(下)
2015/04/13 Python
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
Python基于socket实现简单的即时通讯功能示例
2018/01/16 Python
python os用法总结
2018/06/08 Python
对django xadmin自定义菜单的实例详解
2019/01/03 Python
Python计算公交发车时间的完整代码
2020/02/12 Python
毕业自我鉴定范文
2013/11/06 职场文书
业务员的岗位职责
2014/03/15 职场文书
公司募捐倡议书
2014/05/14 职场文书
项目经理任命书内容
2014/06/06 职场文书
党委书记个人对照检查材料
2014/09/15 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
如何用threejs实现实时多边形折射
2021/05/07 Javascript