获取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+SQLite存储方案
Sep 04 PHP
PHP引用(&amp;)各种使用方法实例详解
Mar 20 PHP
浅谈php提交form表单
Jul 01 PHP
PHP使用trim函数去除字符串左右空格及特殊字符实例
Jan 07 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
详解php curl带有csrf-token验证模拟提交方法
Apr 18 PHP
PHP使用Curl实现模拟登录及抓取数据功能示例
Apr 27 PHP
PHP 访问数据库配置通用方法(json)
May 20 PHP
php实现微信企业付款到个人零钱功能
Oct 09 PHP
PHP crypt()函数的用法讲解
Feb 15 PHP
php ZipArchive实现多文件打包下载实例
Oct 31 PHP
搭建PhpStorm+PhpStudy开发环境的超详细教程
Sep 17 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脚本[带参数]的方法
2010/01/22 PHP
php 代码优化之经典示例
2011/03/24 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
JavaScript 的方法重载效果
2009/08/07 Javascript
QUnit jQuery的TDD框架
2010/11/04 Javascript
js 如何实现对数据库的增删改查
2012/11/23 Javascript
jquery zTree异步加载简单实例分享
2013/02/05 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
javascript实现点击单选按钮链接转向对应网址的方法
2015/08/12 Javascript
使用angularjs创建简单表格
2016/01/21 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
JavaScript Window窗口对象属性和使用方法
2020/01/19 Javascript
python轻松实现代码编码格式转换
2015/03/26 Python
使用C#配合ArcGIS Engine进行地理信息系统开发
2016/02/19 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
Python 一句话生成字母表的方法
2019/01/02 Python
使用TensorFlow实现简单线性回归模型
2019/07/19 Python
python智联招聘爬虫并导入到excel代码实例
2019/09/09 Python
京东奢侈品:全球奢侈品牌
2018/03/17 全球购物
国外的一些J2EE面试题一
2012/10/13 面试题
测控技术与通信工程毕业生自荐信范文
2013/12/28 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
结婚喜宴主持词
2014/03/14 职场文书
奠基仪式主持词
2014/03/20 职场文书
兽医医药专业求职信
2014/07/27 职场文书
物理分数没达标检讨书
2014/09/13 职场文书
机关领导查摆四风思想汇报
2014/09/13 职场文书
公司财务经理岗位职责
2015/04/08 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
浅谈Redis的几个过期策略
2021/05/27 Redis
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python
 Redis 串行生成顺序编码的方法实现
2022/04/03 Redis