This repository has been archived by the owner on Dec 11, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Solar Debug
lifephp edited this page Jul 18, 2012
·
4 revisions
思路源于Disucuz debug. 让你用Solar更方便, 助你的项目的开发, 优化一臂之力!
ps. 开发了这个我才知道Solar要include的文件那么多, hello word要31个.
推荐: php调试可以用debug_backtrace()函数, 很好用!
- 页面总执行时间, 内存消耗.
- Sql列表, Explain Sql, Sql执行时间, 供分析Sql查询, 每次查询都有php backtrace, 更好定位代码.
- Ajax Sql, 每次Ajax Sql都会记录.
- file 列表, 查看Solar 包含的文件.
- Cookie查看.
改动index.php 开启debug DEBUG常量在index.php中定义, 并在index.php最后执行Solar_Debug
// index.php开头 define('DEBUG', true); //.... // 最后 执行Solar_Debug, 要在Done之前 if(defined("DEBUG") && DEBUG) { $debug = Solar::factory('Solar_Debug'); echo $debug->debug(); } // Done! Solar::stop();
改动: Solar.php 记录开始运行时间
- 添加$start_time静态变量, 记录程序始执行的时间.
- 改动start(), 添加判断debug是否开启, 开启则设置$start_time.
// Solar类开始, 添加 public static $start_time; //... // start()方法在最开始时添加: public static function start($config = null) { // don't re-start if we're already running. if (Solar::$_status) { return; } // 记录程序执行开始时间 // life Debug 2012/7/8 22:47 if(defined('DEBUG') && DEBUG) { Solar::$start_time = microtime(true); } //........ }
改动: Solar_Sql_Adapter 记录sql
- 添加sql_debug静态变量.
- query()方法改动, 记录查询的SQL语句, 时间, 文件trace.
// 类开头, 添加sql_debug静态变量 public static $sql_debug; //....... // query()方法中 末尾 public function query($stmt, $data = array()) { //......... // life Debug if(defined('DEBUG') && DEBUG) { self::$sql_debug[] = array('sql' => $stmt, 'time' => number_format((microtime(true) - $time), 6), 'backtrace' => debug_backtrace()); } // done! return $prep; }
- debug.php 外部入口文件, 包含debug_header.php, debug_data.php.
- debug.header.php debug导航.
- debug_data.php Solar_Debug.php生成的数据文件, 里面含有全部的sql, ajax sql, file数据.
- debug_data_log.php 非ajax访问的数据.
- debug_data_ajax_log.php ajax访问的数据. 每次ajax访问都会将数据追加到该文件中, 并和debug_data_log.php的数据结合覆盖到debug_data.php中.
- debug.css, debug.js 不用解释.
index.php, Solar.php, Solar_Sql_Adapter.php改动之后, 把/debug目录放在根目录下, 最简单的方法就是在browser上输入Http://your-project-url/debug/debug.php.
第二个方法是在页面的底部显示debug信息. 在你的layout中_footer.php(反正是在页面的最后面, 放在哪个文件上看你)加上:
<iframe src="http://your-project-url/debug/debug.php" height="1300px" width="100%" frameborder="0" id="debug_iframe"></iframe>
注: iframe的id="debug_iframe"
不能乱改, 改了这这个值你还得到在debug.js中改.