今天开头写点历史:
- 二十年前流行asp,当时用vb整合常用函数库写了一个dll给asp调用,并在此基础上开发一套仿windows界面的后台管理系统;
- 后来asp逐渐没落,于是在十多年前转投php,不久后用php写了一套mvc框架,同时参考asp仿windows经验,结合兴起的jQuery重写后台管理系统。这个框架从php4和php5版本开始,陆续更新到现在,并在这个框架和后台上开发了几十套应用产品,目前大部分运行在php4或者php5上依然没问题;
- 后来golang、python兴起,php也越来越规范化和复杂化。可既然都要求规范化了,那不如直接投奔golang吧…而且vue作为前端,前后分离的模式也开始流行,于是…
- 直到最近的国产化风向起来了,心想golang会不会因为是谷歌背景而在未来有所顾忌?算了,重新整理一遍php框架,做好准备吧。
- 因为当时开发框架时就整合了错误报告、日志记录、内存和效率检测等小工具,并且每开发一个核心部件就会测试其运行效率,选择最优解,遇到bug时,最不济用
var_dump()
和die()
手动一行行试也能解决大部分问题,所以一直以来几乎没上过Xdebug等工具。- 而今天,就在今天,从Xdebug下手吧~~
为什么要写历史呢?难道是快春节了?有点感慨?
Xdebug是PHP的扩展,并且提供了一系列功能来改善 PHP 开发体验。
官网:https://xdebug.org/
一种在执行脚本时在 IDE 或编辑器中单步执行代码的方法。
改进的功能,堆栈跟踪 通知、警告、错误和异常,突出显示代码路径 错误var_dump()
写入每个函数调用,包括参数和调用位置 到磁盘。(可选)还包括每个变量赋值和返回值 每个函数的值。
允许您在可视化工具的帮助下分析 PHP应用程序的性能并找到瓶颈。
显示运行时执行代码库的哪些部分 使用 PHPUnit 进行单元测试。
https://xdebug.org/docs/install
由官网分析PHP状态后决定php下载地址。
phpinfo();
运行php获得内容
复制源代码
ctrl + u
打开源代码界面,复制相关内容,一般前后有<table></table>
标签。
黏贴分析
黏贴至官网导航文本框后点击按钮 Analyse my phpinfo() out
开始分析。
下载
根据分析结果点击其所提供下载
根据导航提示,将下载好的Xdebug组件放入php的ext
目录中,并将文件更名为 php_xdebug.dll
在最后写入一行:
zend_extension = xdebug
可以参考前面示例,将该页代码中涉及php信息的源代码复制黏贴到向导页面
得到分析结果
如果上图红框位置显示版本号,那么恭喜安装成功了。
将更好处理错误消息,并从PHP的内置中获取更好的信息功能。
使用说明:https://xdebug.org/docs/develop
php.ini中写入开启(默认开启):
xdebug.mode = develop
可以通过 phpinfo()
或者 xdebug_info()
查看是否已开启该功能
代码覆盖率可以了解哪些脚本在请求期间执行。
使用说明:https://xdebug.org/docs/code_coverage
php.ini中写入开启:
xdebug.mode = coverage
PHP中的垃圾回收(GC)会对内存和性能产生严重影响,了解它何时被触发以及每次运行的效率如何,借以优化程序。
使用说明:https://xdebug.org/docs/garbage_collection
php.ini中写入开启:
xdebug.mode = gcstats
xdebug.start_with_request = yes
允许查找脚本中的瓶颈,并使用外部工具将其可视化。
说明:https://xdebug.org/docs/profiler
php.ini中写入开启:
xdebug.mode = profile
允许以交互方式演练代码以调试控制流和检查数据结构。
使用说明:https://xdebug.org/docs/step_debug
php.ini中写入开启:
xdebug.mode = debug
允许记录所有函数调用,包括参数,并且以不同格式将值返回给文件
使用说明:https://xdebug.org/docs/trace
php.ini中写入开启:
xdebug.mode = trace
xdebug.mode = debug
xdebug.start_with_request = yes
参考