简介: 简介: 如果 PHP 应用程序运行缓慢,可以使用分析器找出应用程序究竟在哪些 方面浪费了时间。可以将语句、循环、函数、类或者是运行缓慢的库作为分析目 标。如果不是时间而是内存使用出现了
问题,那么一个优秀的分析器还可以显示 组件的内存占用情况。 查看本系列更多内容 本文的标签: 本文的标签: php_(hypertext_preprocessor), 优化, 应用开发, 性能 标记本文! 发布日期: 发布日期: 2007 年 3 月 21 日 级别: 级别: 中级 访问情况 2810 次浏览 建议: 建议: 0 (添加评论)
平均分 (共 4 个评分 )
“为 PHP 应用提速、提速、再提速!” 系列文章的 第 1 部分
演示了如何 使用 XCache(PHP 操作码缓存) 加速整个站点。XCache(仅是少数几种缓存包 中的一种)保留了编译过程的输出,去掉了其他冗余的工作。只要页面没有发生 变化,缓存后的页面就能够胜任 代理的作用。当页面发生变化时,缓存后的页 面就会变为无效并被替换掉。 操作码缓存 —— 以及一个操作码优化器, 通常由相同的包提供 —— 是一种加 快站点响应的低成本技术。很多缓存包是
免费的,并且是开源的,无需改变任何 代码即可从中受益。 当然,在某些应用程序中,相比较实际的执行时间,将 PHP 源代码文件翻译为 其相应的操作码所需的时间微不足道。连接到远程数据库服务器,使用低效的 SQL 语句进行查询,以及其他大量解析和操作数据的工作都非常的繁琐,也因此 增加了开销,甚至产生浪费。良好的网络
设计和灵巧的数据库结构可以使时间冗 长和
查询 缓慢的情况有所改善,如果需要的话还可以向友好的专家请求帮助。 但是,如果代码运行缓慢,您可能更希望自己处理。 但是从何开始呢?正如人们普遍认为的, 在代码完成前调试代码的做法很不明智 —— 因为代码的首次实现可能会非常的迅速。当代码正确且能实现相应的功能 时,不管其表面上看起来运行缓慢还是实际如此,首先要做的就是对其性能进行 测试或基准测试。不执行这样的诊断而尝试去优化代码无疑是在黑暗中摸索。 一个简单的性能指标是挂钟时间(wall clock time),或测量页面请求与完成 呈现之间的实际延迟。对于某些情 况 —— 比如在您自己的
工作站本地运行的 Web 服务器、数据库和浏览器 —— 挂钟时间能够提供信息。然而,挂钟时间对
于其他大多数情况而言并无实际意义,比如
网络延迟时间、活动的 Web 服务器 或者活动的数据库。 一种更精确的测量 —— 甚至可以测量运行单个源代码语句的时间 —— 可以 采用代码分析器。分析器通常被实现为 PHP 运行时引擎的扩展,记录语句
开始 和结束的 delta、记录程序开始和结束之间的 delta 并捕获对来到的请求形成 响应的总时间。有了这种垂直度,就可以将语句、循环、函数、类或者是运行缓 慢的库作为分析目标。如果不是时间而是内存使用出现了问 题,那么一个优秀 的分析器还可以显示组件的内存占用情况。 PHP 的一个较流行的分析器是 Xdebug, 它还为交互地调试 PHP 应用程序提供了 服务器挂钩(hook)。(参见“调试的更好方法”以了解更多信息。该系列的另 一部分将探讨高级交互式调试。 Xdebug 很容易从
源代码构建, ) 将其作为 Zend 扩展进行安装也非常简单。 (现在已有针对某些平台的二进制文件。 当就绪后, ) 对基于
PHP 页面的每个请求都将生成可在 KCacheGrind 中查看的数据集。 构建并安装 Xdebug 如果具备了 PHP 实用工具 phpize 和 php-config,而且具有对 系统的 php.ini 配置文件的访问权,那么安装和设置 Xdebug 只需几分钟的时间。下面 给出的指导说明针对 Linux?,不过在 Mac OS X 上的安装步骤实际上与此类似。 (您可以从 Xdebug Web 站点找到针对 Microsoft? Windows? 的 Xdebug 预编 译版本。) Xdebug 的最新版本为 V2.0.0RC3(最终版本 V2.0.0 在您阅读此文时也许已经