获取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 相关文章推荐
linux php mysql数据库备份实现代码
Mar 10 PHP
Apache2中实现多网站域名绑定的实现方法
Jun 01 PHP
新手菜鸟必读:session与cookie的区别
Aug 22 PHP
php file_get_contents抓取Gzip网页乱码的三种解决方法
Nov 12 PHP
php中rename函数用法分析
Nov 15 PHP
PHP编译安装时常见错误解决办法
May 28 PHP
js代码实现微博导航栏
Jul 30 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
Mar 21 PHP
Yii2简单实现多语言配置的方法
Jul 23 PHP
PHP实现Unicode编码相互转换的方法示例
Nov 17 PHP
Yii1.1框架实现PHP极光推送消息通知功能
Sep 06 PHP
php实现推荐功能的简单实例
Sep 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数据库操作面向对象的优点
2006/10/09 PHP
PHP parse_url 一个好用的函数
2009/10/03 PHP
THINKPHP支持YAML配置文件的设置方法
2015/03/17 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
window.onresize 多次触发的解决方法
2013/11/08 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
jQuery轻松实现无缝轮播效果
2017/03/22 jQuery
JavaScript的变量声明与声明提前用法实例分析
2019/11/26 Javascript
JavaScript实现简单计算器功能
2019/12/19 Javascript
浅谈React中组件逻辑复用的那些事儿
2020/05/21 Javascript
使用eslint和githooks统一前端风格的技巧
2020/07/29 Javascript
[00:48]食人魔魔法师至宝“金鹏之幸”全新模型和自定义特效展示
2019/12/19 DOTA
Python文件读取的3种方法及路径转义
2015/06/21 Python
小议Python中自定义函数的可变参数的使用及注意点
2016/06/21 Python
再谈Python中的字符串与字符编码(推荐)
2016/12/14 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
儿童python练习实例
2018/05/27 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
python中pyplot基础图标函数整理
2020/11/10 Python
HTML5 UTF-8 中文乱码的解决方法
2013/11/18 HTML / CSS
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
外贸业务员工作职责
2014/01/06 职场文书
新年主持词
2014/03/27 职场文书
专业技术职务聘任书
2014/03/29 职场文书
高中生操行评语
2014/04/25 职场文书
个人反四风对照检查材料思想汇报
2014/09/23 职场文书
2015年幼儿园班务工作总结
2015/05/12 职场文书
加班费申请报告
2015/05/15 职场文书
2015教师节通讯稿
2015/07/20 职场文书
致接力运动员加油稿
2015/07/21 职场文书
MySQL表的增删改查(基础)
2021/04/05 MySQL
一看就懂的MySQL的聚簇索引及聚簇索引是如何长高的
2021/05/25 MySQL
python基础之//、/与%的区别详解
2022/06/10 Python