Ubuntu PHP测试环境中调试和分析代码

系统 Linux
面向对象编程的主要目的是改进代码质量、可维护性和重用性,但是有时候随之而来的代价是速度的变慢。当我们存在一些潜在的执行缓慢的代码时,我们不再能够打开我们的简单的Ubuntu PHP文件,从上到下的跟踪它的执行。我们怎么才能知道背后到底在怎么运行呢?

Ubuntu PHP已被广泛应用但是也在不断的更新,这里介绍Ubuntu PHP安装设置使用,帮助大家安装更新Ubuntu PHP系统。面向对象编程越来越流行了,在Ubuntu PHP领域也不例外。所以你选择了合适的设计模式,在***的framework上开发你的网站,抽象你的数据库访问以至于你都忘了SQL这种东西了。

接下来是什么呢?当你开始转向面向对象编程时,扑面而来的是令人头疼的访问路径问题(在你使用的framework和你写的代码之间)。然后你会发现你的网站并没有变快-实际上,它更可能变得更慢。

面向对象编程的主要目的是改进代码质量、可维护性和重用性,但是有时候随之而来的代价是速度的变慢。当我们存在一些潜在的执行缓慢的代码时,我们不再能够打开我们的简单的Ubuntu PHP文件,从上到下的跟踪它的执行。我们怎么才能知道背后到底在怎么运行呢?

Xdebug

Xdebug 2 (当前还是 beta—我在用 2.0.0RC3) 是一个独立的 Ubuntu PHP extension。它为在测试环境中调试和分析代码提供了多种方法。这里,我们关心的是Ubuntu PHP脚本的概要分析(profiling)信息。

在你的apache/Ubuntu PHP开发环境上安装Xdebug已经超出了我们文章的范围。但是我只是简单的用’sudo pecl install xdebug-beta’,然后在Ubuntu PHP.ini中添加一行代码就在我的Ubuntu 6.10 虚拟机上安装好了它。

一旦你安装好Xdebug2,下边的代码将为所以Ubuntu PHP接管的请求开启“auto profiling”功能。
Ubuntu PHP_value xdebug.profiler_output_dir /tmp
Ubuntu PHP_value xdebug.profiler_output_name timestamp
Ubuntu PHP_value xdebug.profiler_enable 1
现在打开出现在/tmp目录下的输出文件…

WinCacheGrind

WinCacheGrind是从输出文件获取有用信息最简单的办法。它提供一个简单的树图展示了Ubuntu PHP执行中用到的class、function和filenames。最终要的是,它能告诉你每个function执行的时间。

WinCacheGrind example(easy注:关于如何使用wincachegrind来进行代码优化,可以参见我前段时间写的《使用Xdebug优化你的程序》)

KCachegrind

如果你在运行KDE(在linux上或者通过fink在Mac OS X上,如果你敢的话),你可能愿意试一试 KCachegrind。它比WinCacheGrind复杂很多,但是它会把数据以一些非常有趣的方式呈现给你。

在这个例子中,callmap 视图非常清晰的显示了通过mysql_query()执行的sql查询花费了最多的时间。Xdebug call map example这里我们看见了部分的callgraph,显示了函数的交互。

(easy注:强烈推荐Rasmus Lerdorf的《Getting Rich with Ubuntu PHP5》,一个使用KCachegrind进行优化的经典实例)

减少摩擦(原文:Grinding),增加cache想知道加速你的代码最简单的办法?答案有三,Cache、Cache还是Cache。用你的新工具找出你代码中比较慢的地方。确定慢查询已经用上了Mysql的Cahe。试试APC之类的Ubuntu PHP二进制码存储。

用Memcahed缓存你的Ubuntu PHP对象。缓存你生成代码的HTML中常见的部分。在发送页面前缓冲整个页面。用 Expires, ETag 和 Last-Modified HTTP headers让用户缓冲你的页面。cache层越多越好。

More Xdebug

xdebug远不止输出概要分析-我把它看成后端开发者的Firebug。我推荐每一个从事Ubuntu PHP相关开发的人在他们的测试环境下装xdebug,即使只是为了能输出彩色的全栈跟踪的Ubuntu PHP错误信息。从Google Summer of Code Project来看,支持即时交互的Xdebug很快就会可用了~

【编辑推荐】

  1. 概括描述Ubuntu PHP安装测试
  2. Ubuntu Ruby在Rails应用程序中解决内存泄漏问题
  3. Ubuntu ruby解析器应用程序的优化
  4. Ubuntu ror性能优化经验与应用的部署
  5. Ubuntu lighttpd安装解压缩运行代码
责任编辑:佚名 来源: csdn
相关推荐

2010-03-03 17:12:56

Ubuntu ASP.

2010-09-10 14:48:05

2010-01-04 17:59:14

Ubuntu PHP

2014-08-18 09:31:15

2014-08-28 15:08:35

Linux内核

2022-05-26 09:00:00

网站抓取Lightrun开发

2012-07-04 10:18:10

Tomcat调试代码分析

2010-01-04 17:34:15

Ubuntu gstr

2011-06-22 10:48:35

PHP

2013-09-02 16:08:50

调试Windows

2023-05-11 08:33:17

测试和调试Python

2010-03-02 10:31:07

FirePHP调试

2009-11-18 15:05:56

PHP递归数组

2011-03-10 11:04:06

Ubuntu搭建LAMP

2011-09-06 14:59:20

UbuntuMemcached

2009-03-30 15:52:24

Windows Emb

2009-11-18 13:24:05

PHP单元素模式

2010-07-11 00:24:50

EclipsePHPPDT

2017-12-19 15:42:47

Ubuntu 17.1LEMPMariaDB

2011-08-30 16:31:23

UbuntuXdebug
点赞
收藏

51CTO技术栈公众号