仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1258|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网页设计利用XDebug调试及单位测试掩盖率剖析

[复制链接]
第二个灵魂 该用户已被删除
跳转到指定楼层
#
发表于 2015-2-3 23:39:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
没有人会喜欢和见异思迁的人交朋友,因为这种人太不安分,太不可靠,因此,你必须要强迫自己完成自己的目标,哪怕可能会很难受,也得坚持,毅力就是这么锻炼出来的。   明天我就就本人对XDebug利用的一些体验做一小段分享。XDebug也是由于需求是用来生成掩盖率剖析文件才装置的,刚接触不久,平常用的也不是很频仍,然而这个切实其实是一个好东西,假如想要依附它来剖析法式的功能仍是需求本人亲手去尝尝。详细它有多好,请听我逐一道来。

<!--[if !supportLists]-->1、<!--[endif]-->装置篇(XDebug PHPUnit)

A:装置XDebug:

Xdebug网下载xdebug dll文件,寄存到php加载的ext目次下(可以选择重定名,好比php_xdebug.dll,然后翻开php.ini文件,添加设置装备摆设

[xdebug]

zend_extension_ts = php_xdebug.dll

xdebug.profiler_enable = on

xdebug.trace_output_dir = D:\PHPAPP\XDebug

xdebug.profiler_output_dir=D:\PHPAPP\XDebug


xdebug需求采取zend引擎加载的体例加载,所以用zend_extension_ts或是zend_extension, ts是thread_safety, 今朝5.3以上才撑持zend_extension加载,<5.3的用zend_extension_ts加载(或你可以检查phpinfo是不是启用了zts),然后重启apache,检查phpinfo,就发明XDebug选项了。




可以看到xdebug.profiler_enablexdebug.profiler_output_dirxdebug.trace_output_dir这三个是咱们方才设置装备摆设的项,可以装置本人的需求设置装备摆设残剩项,xdebug.profiler_enable:开启功能剖析,

开启这个以后会在xdebug.profiler_output_dir这个目次下生成cachegrind.out.XXX的剖析文件,假如指定了xdebug.profiler_output_name这个,则输入来的文件就会是指定的名字.xxx的格局(此办法不合适剖析,缘由稍后申明),

xdebug.trace_options:这个是开启跟踪项,

开启该项以后,会在xdebug.trace_output_dir下临盆跟踪文件,注重该项会影响运转速度,由于他需求纪录跟踪过程当中的一系列事务。

关于XDebug还有一点需求注重的:XDebug是调试的,也就是说设置装备摆设了XDebug那法式运转的就是一个Debug形态,所以这时候候zend_optimizer就不克不及用了,总不克不及让法式即调试形态又处于优化形态哈。

更多关于XDebug的,人人去网上开掘吧~~然后一同切磋哈

友谊提示:关于利用集成情况的同窗,好比Wamp,它具有两个PHP.ini设置装备摆设文件,一个在Apache下,一个在PHP下,Apache下是影响web的,而PHP下是影响号令行的,所以・・・・(感激俊哥的提示)


B:装置PHPUnit:

关于PHPUnit的装置进程,网上也已良多了,之前本人为了终究装置胜利以后也小写了篇装置篇(http://user.qzone.qq.com/414073277/blog/1292122868),所以这里就不再赘述了,网上的一些装置教程大都能完成装置。就复杂说下进程:

PHPUnit装置用的是pear的装置体例,所以假如机子没有装置过pear包需求先装置下,普通在php装置的时分在其装置目次下都有一个go-pear.bat文件,直接履行便可完成装置,【这里装置需求注重扩大exif,这个扩大会用到mbstring扩大中的办法,所以mbstring的加载按次需求再exif之上。】完成pear的装置以后就能够履行pear,检查pear的号令参数,




然后顺次履行:

pear channel-discover pear.phpunit.de

pear install Calldeps phpunit/PHPUnit

需求注重的是如今最新版的phpunit是3.5的・・然而这个只要pear的版本是1.6以上及PHP5.2.X才会装置失掉最新版・不然是装置的是第一次的版本(不外不影响利用)。

装置好后就能够履行phpunit检查相干信息:




可以看到有―coverage-html Ccoverage-clover Ccoverage-source这三个选项・就是由于在XDebug装置胜利以后才干用,这三个关于导出掩盖率文件可是很主要的选项。


<!--[if !supportLists]-->2、<!--[endif]-->PHPUnit 单位测试掩盖率剖析

单位测试,最主要的目标之一就是掩盖率。这点固然Zend Studio上可以很明晰的看出来,可是要导出成一分文档就不太好使了,所以这时候候XDebug就又可以帮上忙了,利用的时分也挺复杂,挪用号令便可:

phpunit Ccoverage-html D:\PHPAPP\XDebug\ YouTest

如许就会将生成的掩盖文件(html格局的)放在D:\PHPAPP\XDebug\目次下了,




然后就能够在放置的目次下找到一堆的html文件,运转下index.html




就能够看到如许的图了,英文字母很复杂・・意思也了然就不注释了,申明一点:

测试了局申明:一共有5种,上图的例子呈现了两种。

. :代表准确

F :代表断言毛病

E :代表PHP法式毛病或是异常

I : 代表没有完成的办法

S : 代表是跳过的办法

临盆的掩盖文件申明:

Classes: 只要一个类中的一切办法都被掩盖的时分,这个类才算是被测试完的

Functions/Methods :只要一个办法或是函数的一切无效的语句代码都被履行到了才算这个办法或是函数是被测试完的

Lines: 总行数将会不饱行正文,空行,<?php ?> 标签, 及类及办法的声明。

利用phpunit Ccoverage-clover D:\PHPAPP\XDebug\first.xml YouTest

临盆的将会是一个xml格局的文件,这个格局的文件后果不分明,没有html格局的好,这边的后果被我删失落了所以么无效果图可看,第三个掩盖文件的参数我没测试过,人人有乐趣可以尝尝。


<!--[if !supportLists]-->3、<!--[endif]-->法式履行功能剖析

XDebug除无效的匡助剖析单位测试掩盖率以外,还可以帮组剖析法式履行的瓶颈地点,开启剖析的功效:

xdebug.profiler_enable = on

xdebug.profiler_output_dir=D:\PHPAPP\XDebug

设置下面两项,然后履行你要剖析的法式,就会在下面的目次下看到cachegrind.out.XXX的文件,这个文件直接翻开就是一些纪录,需求借助第三方的cachegrind检查东西才行,一个好用的东西是winCacheGrind,检查起来很便利。




可以看到履行的总工夫,及每一个函数履行的工夫。

由于这个东西在翻开文件的时分,只能翻开cachegrind.out.*的文件,所以待剖析的文件必需是这个名字的,所觉得了省去重定名,这也就是为啥我说不建议修正xdebug.profiler_output_name这个选项的缘由。

<!--[if !supportLists]-->4、<!--[endif]-->XDebug库函数

XDebug除上述体例外,还有本人的一些函数库供应,可以在你法式的代码段任何中央履行,详细的请看http://xdebug.org/docs/all_functions

XDebug的功效,还不止这些,由于他的选项・好大的一页,所以仍是去http://xdebug.org/docs/这里看看官方的申明。靠谱!

PHP于1994年由Rasmus Lerdorf创建,刚刚开始是Rasmus Lerdorf为了要维护个人网页而制作的一个简单的用Perl语言编写的程序。
老尸 该用户已被删除
18#
发表于 2015-7-11 21:44:12 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
透明 该用户已被删除
17#
发表于 2015-7-11 04:47:31 | 只看该作者
小鸟是第一次发帖(我习惯潜水的(*^__^*) 嘻嘻……),有错误之处还请大家批评指正,另外,前些日子听人说有高手能用php写驱动程序,真是学无止境,人外有人,天外有天。
若相依 该用户已被删除
16#
发表于 2015-7-7 07:50:10 | 只看该作者
当然这种网站的会员费就几十块钱。
深爱那片海 该用户已被删除
15#
发表于 2015-6-27 22:33:09 | 只看该作者
本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。
蒙在股里 该用户已被删除
14#
发表于 2015-6-9 23:24:22 | 只看该作者
你很难利用原理去编写自己的代码。对于php来说,系统的学习我认为还是很重要的,当你有一定理解后,你可你针对某种效果研究,我想那时你不会只是复制代码的水平了。
13#
发表于 2015-5-9 01:15:31 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
简单生活 该用户已被删除
12#
发表于 2015-4-29 02:19:06 | 只看该作者
这些中手常用的知识,当你把我说的这些关键字都可以熟练运用的时候,你可以选择自己
谁可相欹 该用户已被删除
11#
发表于 2015-4-12 13:55:47 | 只看该作者
做为1门年轻的语言,php一直很努力。
爱飞 该用户已被删除
10#
发表于 2015-4-6 17:01:58 | 只看该作者
我学习了一段时间后,我发现效果并不好(估计是我自身的问题)。因为一个人的精力总是有限的,同时学习这么多,会导致每个的学习时间都得不到保证。
只想知道 该用户已被删除
9#
发表于 2015-3-24 10:38:51 | 只看该作者
微软最近出的新字体“微软雅黑”,虽然是挺漂亮的,不过firefox  支持的不是很好,所以能少用还是少用的好。
冷月葬花魂 该用户已被删除
8#
发表于 2015-3-22 01:09:26 | 只看该作者
在我安装pear包的时候老是提示,缺少某某文件,才发现 那群extension 的排列是应该有一点的顺序,而我安装的版本的排序不是正常的排序。没办法我只好把那群冒号加了上去,只留下我需要使用的扩展。
再现理想 该用户已被删除
7#
发表于 2015-3-18 04:07:48 | 只看该作者
刚开始安装php的时候,我图了个省事,把php的扩展全都打开啦(就是把php.ini 那一片 extension 前面的冒号全去掉啦),这样自然有好处,以后不用再需要什么功能再来打开。
分手快乐 该用户已被删除
6#
发表于 2015-3-11 10:05:43 | 只看该作者
多看优秀程序员编写的代码,仔细理解他们解决问题的方法,对自身有很大的帮助。
小女巫 该用户已被删除
5#
发表于 2015-3-10 02:43:53 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
admin 该用户已被删除
地板
发表于 2015-3-3 20:28:36 | 只看该作者
php里的数组为空的时候是不能拿来遍历的;(这个有点低级啊,不过我刚被这个边界问题墨迹了好长一会)
莫相离 该用户已被删除
板凳
发表于 2015-2-27 09:07:25 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
活着的死人 该用户已被删除
沙发
发表于 2015-2-9 15:52:16 | 只看该作者
没接触过框架的人,也不用害怕,其实框架就是一种命名规范及插件,学会一个框架其余的框架都很好上手的。
若天明 该用户已被删除
楼主
发表于 2015-2-4 04:48:43 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-22 21:27

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表