频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

分析PHP应用程序以查找、诊断和加速运行缓慢的代码

来源: 作者:Martin Streicher 出处:巧巧读书 2008-02-01 进入讨论组
下一页 1 2 3 4 5 6 7 8 

  如果 PHP 应用程序运行缓慢,可以使用分析器找出应用程序究竟在哪些方面浪费了时间。可以将语句、循环、函数、类或者是运行缓慢的库作为分析目标。如果不是时间而是内存使用出现了问题,那么一个优秀的分析器还可以显示组件的内存占用情况。
 
    操作码缓存 —— 以及一个操作码优化器,通常由相同的包提供 —— 是一种加快站点响应的低成本技术。很多缓存包是免费的,并且是开源的,无需改变任何代码即可从中受益。

    当然,在某些应用程序中,相比较实际的执行时间,将 PHP 源代码文件翻译为其相应的操作码所需的时间微不足道。连接到远程数据库服务器,使用低效的 SQL 语句进行查询,以及其他大量解析和操作数据的工作都非常的繁琐,也因此增加了开销,甚至产生浪费。良好的网络设计和灵巧的数据库结构可以使时间冗长和查询缓慢的情况有所改善,如果需要的话还可以向友好的专家请求帮助。但是,如果代码运行缓慢,您可能更希望自己处理。

    但是从何开始呢?正如人们普遍认为的,在代码完成前调试代码的做法很不明智 —— 因为代码的首次实现可能会非常的迅速。当代码正确且能实现相应的功能时,不管其表面上看起来运行缓慢还是实际如此,首先要做的就是对其性能进行测试或基准测试。不执行这样的诊断而尝试去优化代码无疑是在黑暗中摸索。

    一个简单的性能指标是挂钟时间(wall clock time),或测量页面请求与完成呈现之间的实际延迟。对于某些情况 —— 比如在您自己的工作站本地运行的 Web 服务器、数据库和浏览器 —— 挂钟时间能够提供信息。然而,挂钟时间对于其他大多数情况而言并无实际意义,比如网络延迟时间、活动的 Web 服务器或者活动的数据库。

    一种更精确的测量 —— 甚至可以测量运行单个源代码语句的时间 —— 可以采用代码分析器。分析器通常被实现为 PHP 运行时引擎的扩展,记录语句开始和结束的 delta、记录程序开始和结束之间的 delta 并捕获对来到的请求形成响应的总时间。有了这种垂直度,就可以将语句、循环、函数、类或者是运行缓慢的库作为分析目标。如果不是时间而是内存使用出现了问题,那么一个优秀的分析器还可以显示组件的内存占用情况。

    PHP 的一个较流行的分析器是 Xdebug,它还为交互地调试 PHP 应用程序提供了服务器挂钩(hook)。(参见“调试的更好方法”以了解更多信息。该系列的另一部分将探讨高级交互式调试。) Xdebug 很容易从源代码构建,将其作为 Zend 扩展进行安装也非常简单。(现在已有针对某些平台的二进制文件。)当就绪后,对基于 PHP 页面的每个请求都将生成可在 KCacheGrind 中查看的数据集。本U R L:http://www.qqread.com/php/2008/02/b395140.html 更多文章 更多内容请看PHP开发应用手册PHP应用篇专题,或进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
下一页 1 2 3 4 5 6 7 8 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章