| dump 浏览器友好的变量输出 | |
|---|---|
| 用法 | dump($var, $echo=true, $label=null, $strict=true) |
| 参数 | var(必须):要输出的变量,支持所有变量类型 echo(可选):是否直接输出,默认为true,如果为false则返回但不输出 label(可选):变量输出的label标识,默认为空 strict(可选):输出变量类型,默认为true,如果为false则采用print_r输出 |
| 返回值 | 如果echo参数为false 则返回要输出的字符串 |
$Blog = D("Blog");
$blog = $Blog->find(3);
dump($blog);在浏览器输出的结果是:array(12) {
["id"] => string(1) "3"
["name"] => string(0) ""
["userId"] => string(1) "0"
["categoryId"] => string(1) "0"
["title"] => string(4) "test"
["content"] => string(4) "test"
["cTime"] => string(1) "0"
["mTime"] => string(1) "0"
["status"] => string(1) "0"
["readCount"] => string(1) "0"
["commentCount"] => string(1) "0"
["tags"] => string(0) ""
}| debug_start 区间调试开始(记录初始时间和内存占用) | |
|---|---|
| 用法 | debug_start($label='') |
| 参数 | label(可选):区间的label标识,默认为空 |
| 返回值 | 无 |
| debug_end 区间调试结束(记录区间结束时间和内存占用 并输出结果) | |
|---|---|
| 用法 | debug_end($label='') |
| 参数 | label(可选):区间的label标识,默认为空, 必须和debug_start的label对应才能输出正确的区间结果 |
| 返回值 | 无 |
debug_start('run');
$blog = D("Blog");
$blog->select();
debug_end('run');会输出下面的运行信息:Process run: Times 0.007730s Memories 76 k如果仅仅需要调试时间开销,还可以使用内置的G函数来更方便实现| G 用于记录和统计时间(微秒) | |
|---|---|
| 用法 | G($start,$end='',$dec=4) |
| 参数 | start(必须):起始位置标识 end(可选):记录结束标记并统计时间 dec(可选):调试时间的统计精度,默认为小数点后4位 |
| 返回值 | 如果end为空或者是一个浮点数, 无返回值。 如果end是一个字符串,则返回从start到end位置的使用时间。 |
G('run');
$blog = D("Blog");
$blog->select();
echo G('run','end').'s';除了上面的 函数外,系统还提供了一个扩展调试类Debug| Debug::mark 标记调试位(并记录该位置的时间和内存占用) | |
|---|---|
| 用法 | Debug::mark($name) |
| 参数 | name(必须):调试标记位的name标识 |
| 返回值 | 无 |
| Debug::useTime 统计区间标记调试位的使用时间 | |
| 用法 | useTime($start,$end,$decimals = 6) |
| 参数 | start(必须):调试开始位置标识 end(必须):调试结束位置标识 decimals(精度):调试时间的统计精度默认为小数点后6位 |
| 返回值 | 区间位置的使用时间(字符串) |
| Debug::useMemory 统计区间标记调试位的内存占用 | |
| 用法 | useMemory($start,$end) |
| 参数 | start(必须):调试开始位置标识 end(必须):调试结束位置标识 |
| 返回值 | 区间位置的内存占用(字符串) |
| Debug::getMemPeak 统计区间标记调试位的内存占用峰值 | |
| 用法 | getMemPeak ($start,$end) |
| 参数 | start(必须):调试开始位置标识 end(必须):调试结束位置标识 |
| 返回值 | 区间位置的内存占用峰值(字符串) |
import('ORG.Util.Debug');
Debug::mark('run');
$blog = D("Blog");
$blog->select();
Debug::mark('end');
echo Debug::useTime('run','end').'s';
echo Debug::useMemory('run','end').'kb';$blog = D("Blog");
$vo = $blog->create();
trace('create vo',$vo);
$vo = $blog->find();
trace('find vo',$vo);$User = M("User"); // 实例化User对象
$User->find(1);
echo $User->getLastSql();输出结果是$User = M("User"); // 实例化User模型
$Info = M("Info"); // 实例化Info模型
$User->find(1);
$Info->find(2);
echo M()->getLastSql();
echo $User->getLastSql();
echo $Info->getLastSql();输出结果是注意:Mongo数据库驱动由于接口的特殊性,不存在执行SQL的概念,因此SQL日志记录功能是额外封装实现的,所以出于性能考虑,只有在开启调试模式的时候才支持使用getLastSql方法获取最后执行的SQL记录。