获取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中文本操作的类
Mar 17 PHP
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
Jul 01 PHP
解析php中的fopen()函数用打开文件模式说明
Jun 20 PHP
eaglephp使用微信api接口开发微信框架
Jan 09 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
php递归创建目录的方法
Feb 02 PHP
深入php内核之php in array
Nov 10 PHP
使用WordPress发送电子邮件的相关PHP函数用法解析
Dec 15 PHP
PHP文件上传处理案例分析
Oct 15 PHP
PHP的Trait机制原理与用法分析
Oct 18 PHP
PHP实现简单登录界面
Oct 23 PHP
Laravel框架实现即点即改功能的方法分析
Oct 31 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实现基于面向对象的mysqli扩展库增删改查操作工具类
2017/07/18 PHP
详解PHP 7.4 中数组延展操作符语法知识点
2019/07/19 PHP
Laravel使用Queue队列的技巧汇总
2019/09/02 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
phpstudy后门rce批量利用脚本的实现
2019/12/12 PHP
JQuery 学习笔记 选择器之四
2009/07/23 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
SyntaxHighlighter 3.0.83使用笔记
2015/01/26 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
PHP结合jQuery实现红蓝投票功能特效
2015/07/22 Javascript
JavaScript中Textarea滚动条不能拖动的解决方法
2015/12/15 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
jQuery EasyUI开发技巧总结
2017/09/26 jQuery
深入浅析Vue.js 中的 v-for 列表渲染指令
2018/11/19 Javascript
实例讲解JavaScript截取字符串
2018/11/30 Javascript
vue实现滑动到底部加载更多效果
2020/10/27 Javascript
使用coverage统计python web项目代码覆盖率的方法详解
2019/08/05 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
Python3 集合set入门基础
2020/02/10 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
用gpu训练好的神经网络,用tensorflow-cpu跑出错的原因及解决方案
2021/03/03 Python
CSS3实现闪烁动画效果的方法
2015/02/09 HTML / CSS
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
学生打架检讨书1000字
2014/01/16 职场文书
公司中秋节活动方案
2014/02/12 职场文书
表决心的诗句大全
2014/03/11 职场文书
手术室护士长竞聘书
2014/03/31 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
2014小学语文教师个人工作总结
2014/12/03 职场文书
妈妈别哭观后感
2015/06/08 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
详解Nginx 被动检查服务器的存活状态
2021/10/16 Servers
企业版Windows 11有哪些新功能? Win11适用于企业的功能介绍
2021/11/21 数码科技
一次Mysql update sql不当引起的生产故障记录
2022/04/01 MySQL
SQL Server一个字符串拆分多行显示或者多行数据合并成一个字符串
2022/05/25 SQL Server