迈启PHP框架深度整合了开发调试功能,能够非常方便的进行开发测试,并且独创的提供了本地开发模式和远程调试功能
打开根目录的config.php
文件找到 $config['local_debug_cfg']
配置选项,可以看到,它的默认值为myqee.debug
,你可以修改成自己特有的值,比如 mysite.debug
打开php.ini
文件,在里面加入
[MyQEE]
myqee.debug = On
如果你修改成了 mysite.debug
,则加入
[MyQEE]
mysite.debug = On
然后重启php服务器,就开启了本地开发模式
系统默认是关闭远程调试功能的,需要打开首先需要配置 config.php
中的 $config['debug_open_password']
参数,是用于开启调试模式的用户名和密码(在V2版本中只有密码),key为用户名,value为密码的md5值,支持多个,留空则关闭此功能。
例如
$config['debug_open_password'] = array
(
'myqee' => 'e10adc3949ba59abbe56e057f20f883e',
);
则表示开启远程调试的帐号为myqee,密码为123456(e10adc3949ba59abbe56e057f20f883e 为 123456 的md5值)。
设置好后,你就可以在根目录输入 /opendebugger 路径,比如 http://localhost/opendebugger ,然后会出现输入开启debug的登录框,输入帐号密码即可开启远程调试模式。
一旦开启远程调试模式后,你将可以使用和本地调试模式开启后相似的功能。
开启调试模式后
如果PHP程序有错误,所有500错误将会直接输出程序跟踪的信息,你可以直接看到错误的完整内容以及定位错误文件的信息。
另外,在本地开发模式开启后,你可以使用Firefox浏览器安装好FireBug和FirePHP插件,然后打开FireBug控制台,你会看到页面之外的很多系统运行信息。
类似:
这样的信息。
Firebug : http://getfirebug.com/ FirePHP : http://www.firephp.org/
比如包括了系统加载的目录,程序内执行的所有的SQL语句,以及缓存是否命中等等非常多的有用的信息。
除此之外,在正常的页面中,可以增加debug=yes
的GET参数打开页面的调试工具。调试工具包含了:查看SQL分析报告,无缓存数据等等非常有用的功能。
在编写代码时,你可以使用一下代码判断是否开启debug
if (IS_DEBUG>>1)
{
//开启了在线调试
Core::debug()->info('只会在在线debug打开时执行到');
}
if (IS_DEBUG & 1)
{
//本地调试打开
Core::debug()->info('只会在在本地开发模式时执行到');
}
if (IS_DEBUG)
{
// 开启了调试
Core::debug()->info('在FireBug中可以看到的信息');
}
你可以把你需要调试输出的代码放心的写在if(IS_DEBUG){...}
内,这样即便发布到生产环境中也不会对一般用户产生影响。
Core::debug()
方法在测试环境中将会返回一个FirePHP的对象,常用的方法有
加入GET参数 debug=sql
即可查看SQL分析信息。
页面后面会出现类似如下图示:
会出现一个Database项目,会列出页面执行的每一条SQL的分析结果。
再来一张演示图片:
输出调试信息其实很简单,主要使用Core::debug()方法即可实现
例如:实现FirePHP的输出信息:
Core::debug()->info('信息内容');
Core::debug()->error('错误信息');
Core::debug()->group('分组开启');
Core::debug()->log('日志信息');
Core::debug()->warn('警示信息');
Core::debug()->table('表格',
array(
array('标题一','二','三'),
array('行1列1','行1列2','行1列3'),
array('行2列1','行2列2','行2列3'),
)
);
Core::debug()->groupEnd(); //分组关闭
输出截图如下:
更详细的功能请查看FirePHP相关说明。
上面的方法实际是是通过header头信息输出的,所以它不会影响页面使用,必须配合FirePHP才可以使用。
现在介绍通过页面尾部输出信息的方式来实现查看详细信息的方法。主要通过方法 Core::debug()->profiler() 来实现。
//判断是否开启
if (IS_DEBUG && Core::debug()->profiler()->is_open())
{
//执行一个
$benchmark = Core::debug()->profiler()->start('Test', 'abc');
//一些代码
sleep(1);
//统计结束
Core::debug()->profiler()->stop();
//再执行一个试试
$benchmark = Core::debug()->profiler()->start('Test', 'abc');
Core::debug()->profiler()->stop();
//再执行一个def
$benchmark = Core::debug()->profiler()->start('Test', 'def');
sleep(1);
$data = array
(
'abc' => 1,
'def' => 2,
'aaa' => '输出内容',
);
Core::debug()->profiler()->stop($data);
}
执行时在URL上加入?debug=yes 输出截图如下: