获取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中的一个中文字符串截取函数
Feb 14 PHP
javascript 小型动画组件与实现代码
Jun 02 PHP
php数组随机排序实现方法
Jun 13 PHP
浅谈PHP中JSON数据操作
Jul 01 PHP
PHP代码判断设备是手机还是平板电脑(两种方法)
Oct 19 PHP
PHP使用SOAP扩展实现WebService的方法
Apr 01 PHP
PHP socket 模拟POST 请求实例代码
Jul 18 PHP
Zend Framework框架实现类似Google搜索分页效果
Nov 25 PHP
PHP中trait使用方法详细介绍
May 21 PHP
PHP用PDO如何封装简单易用的DB类详解
Jul 30 PHP
Laravel框架Request、Response及Session操作示例
May 06 PHP
Vagrant(WSL)+PHPStorm+Xdebu 断点调试环境搭建
Dec 13 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/12/23 PHP
php上传图片存入数据库示例分享
2014/03/11 PHP
PHP使用CURL_MULTI实现多线程采集的例子
2014/07/29 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
php处理静态页面:页面设置缓存时间实例
2017/06/22 PHP
JavaScript中的prototype使用说明
2010/04/13 Javascript
jQuery中add实现同时选择两个id对象
2010/10/22 Javascript
iframe子父页面调用js函数示例
2013/11/07 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
jQuery animate easing使用方法图文详解
2016/06/17 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
分析JS中this引发的bug
2017/12/12 Javascript
Node中使用ES6语法的基础教程
2018/01/05 Javascript
用p5.js制作烟花特效的示例代码
2018/03/21 Javascript
jQuery实现的五星点评功能【案例】
2019/02/18 jQuery
基于Vue sessionStorage实现保留搜索框搜索内容
2020/06/01 Javascript
[01:08:48]LGD vs OG 2018国际邀请赛淘汰赛BO3 第三场 8.25
2018/08/29 DOTA
Python入门_条件控制(详解)
2017/05/16 Python
Python实现读取及写入csv文件的方法示例
2018/01/12 Python
python验证码识别实例代码
2018/02/03 Python
python tkinter图形界面代码统计工具
2019/09/18 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
python使用rsa非对称加密过程解析
2019/12/28 Python
PyCharm无法识别PyQt5的2种解决方法,ModuleNotFoundError: No module named 'pyqt5'
2020/02/17 Python
使用python批量修改XML文件中图像的depth值
2020/07/22 Python
资生堂美国官网:Shiseido美国
2016/09/02 全球购物
jurlique茱莉蔻英国官网:澳洲天然护肤品
2018/08/03 全球购物
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
财务助理岗位职责
2013/11/10 职场文书
文体活动实施方案
2014/03/27 职场文书
文明班级申报材料
2014/12/24 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
微信小程序基础教程之echart的使用
2021/06/01 Javascript
SpringBoot2零基础到精通之异常处理与web原生组件注入
2022/03/22 Java/Android