获取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 相关文章推荐
ASP和PHP都是可以删除自身的
Apr 09 PHP
php session和cookie使用说明
Apr 07 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
php 检查电子邮件函数(自写)
Jan 16 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
PHP实现对文本数据库的常用操作方法实例演示
Jul 04 PHP
CentOS安装php v8js教程
Feb 26 PHP
javascript+php实现根据用户时区显示当地时间的方法
Mar 11 PHP
Laravel程序架构设计思路之使用动作类
Jun 07 PHP
Yii框架常见缓存应用实例小结
Sep 09 PHP
TP5框架实现签到功能的方法分析
Apr 05 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多用户计数器代码
2007/03/11 PHP
php 字符过滤类,用于过滤各类用户输入的数据
2009/05/27 PHP
PHP的Yii框架中过滤器相关的使用总结
2016/03/29 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
Laravel 5.4重新登录实现跳转到登录前页面的原理和方法
2017/07/13 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
Centos7 Yum安装PHP7.2流程教程详解
2019/07/02 PHP
jQuery 1.5最新版本的改进细节分析
2011/01/19 Javascript
JQuery防止退格键网页后退的实现代码
2012/03/23 Javascript
js自动闭合html标签(自动补全html标记)
2012/10/04 Javascript
顶部缓冲下拉菜单导航特效的JS代码
2013/08/27 Javascript
ie8下修改input的type属性报错的解决方法
2014/09/16 Javascript
自己封装的一个原生JS拖动方法(推荐)
2016/11/22 Javascript
Webpack实现按需打包Lodash的几种方法详解
2017/05/08 Javascript
BootStrap入门学习第一篇
2017/08/28 Javascript
vue  自定义组件实现通讯录功能
2018/09/30 Javascript
关于微信小程序登录的那些事
2019/01/08 Javascript
[19:54]夜魇凡尔赛茶话会 第一期02:看图识人
2021/03/11 DOTA
详解Python中的__init__和__new__
2014/03/12 Python
python的tkinter布局之简单的聊天窗口实现方法
2014/09/03 Python
Python3导入自定义模块的三种方法详解
2018/04/13 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
Python3常用内置方法代码实例
2019/11/18 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
学生如何注册Pycharm专业版以及pycharm的安装
2020/09/24 Python
如何利用python 读取配置文件
2021/01/06 Python
用CSS3实现Win8风格的方格导航菜单效果
2013/04/10 HTML / CSS
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
土木工程实习生自我鉴定
2013/09/19 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
开学典礼观后感
2015/06/15 职场文书
2017年寒假少先队活动总结
2016/04/06 职场文书
MySQL官方导出工具mysqlpump的使用
2021/05/21 MySQL