本文讨论了一种比较工具,用于比较用于分析PHP代码的会话,该工具使在Bitrix CMS上的项目中快速发现瓶颈成为可能。
从远处
7月,Bitrix当时已更新为最新版本。页面加载速度下降了:某处增加了20%,某处增加了300 +%。 特别是在客户订购阶段。
数字令人印象深刻,令人难过。 为什么要更新?

即 如果不进行更新,则可能会立即解决两个问题:实际更新Bitrix并将代码库更新为PHP> 7.1。
刹车的原因
事实证明,最大的原因是使用交付配置文件的新代码逻辑。 根据代码,他们可以更正确地做到这一点,或者做些什么:货件显示为单独的实体。 现在,可以分几批发送订单(在成本,交付方式和商品组成方面具有其自身的特征)。
但是,现在交货概要文件是数据库中的一个单独条目,受Bitrix内核的限制,每次您需要检查下订单时显示此概要文件的可能性时,都会弹出该概要文件。
总的来说,本文将不会重点讨论为应对刹车所做的确切重做,而是针对一种工具,该工具可以快速找到代码中的瓶颈并进行修复。
XHProf管理员
我们可以使用来自Facebook的流行探查器-XHProf。 禁止使用该工具的缺点涉及其GUI:
- 分析会话之间缺乏清晰的导航
- 无法在同一名称空间之外同时比较两个以上的会话。
- 您无法在会话列表中对其发表评论。 在第十届会议之后,您已经忘记了以前的概要分析结果所涉及的更改。
结果,查看了本机XHProf GUI的SOURCES,并有些惊恐地为他编写了一个新的GUI,涵盖了列出的缺点。
安装方式
→ 链接到项目
我不会描述如何安装XHProf和配置文件,至少在Habré上有一些不错的教程。
要安装XHProf Admin,请将xhprof_admin文件夹放入本机XHProf的xhprof_html文件夹中。 或克隆整个项目(它已经包含XHProf和新的GUI)。
然后打开页面<xhprof的路径> / xhprof_html / xhprof_admin /
如果已启用映射(如文档中所建议),则需要打开<xhprof的路径> / xhprof_admin /
主页

包含:
- 列出所有按日期排序的性能分析会话
- 会话评论字段
- 寒鸦,您可以选择要删除,比较,汇总的会话
- 链接到新报告
- 链接到本机报告和通话图
- 区分和汇总的会话权重字段
- 一个字段,指定在比较模式和差异模式下显示会话的顺序
- 按键:
- 比较-比较选定的会话(新报告)
- Diff-用于比较一个名称空间中的会话的标准报告
- 聚合-在一个名称空间中具有会话聚合的标准报告
- 保存自定义评论-将会话的评论保存(在单独的文件中)
- 删除选定的运行-删除会话文件和注释文件
- 链接到本机会话列表页面
查看原始报告,Diff运行,聚合运行,查看调用图-XHProf GUI的本机功能-我将不对其进行描述。 我只能说XHProf Admin允许您方便地导航到它们,而不是手动编译链接。
比较运行

一个新的报告,使您可以快速评估生产率的增长或下降。
要使用它,请在主页上:
- 选择我们要比较的会话。
- 我们将排序字段设置为“排序”,以确定会话的显示顺序:该字段的值越小,会话显示越早。 第一个会话将作为基础会话-所有后续会话都将与之进行比较。
- 如果我们要显示指标的平均值,则标记为“显示平均值”。
- 点击“比较”。

该报告未显示每个指标“占用”该功能的百分比,以免使页面混乱,但显示绝对值。 如果在基础会话与后续会话之间,所配置函数的度量标准之间的差异超过1%,则将清楚显示:绿色表示改进,红色表示回归。
默认情况下:
- 该报告显示前100个功能。 如果您需要更多,请单击“全部显示”。
- 数据按“包含”排序。 Wall Time(微秒)”,但您可以单击任意指标并按其排序。
要从报告中排除会话,请单击“排除”。
可以按每个指标进行排序-只需单击列标题即可。
要显示所有选定会话的平均值,请单击“显示平均值”。
要深入了解某个功能,可以单击该功能与指标与显示的会话相交处的单元格。

使用范例
- 我们在源代码上启动了探查器。 我们打开了会话列表,并添加了评论。
- 我们在改进的代码上启动了探查器。 还添加了评论。
- 对项目2进行了几次。
- 然后,我们打开分析会话列表,依次选择所有会话,然后单击“比较”。
- 我们查看了这些变化。
- 他们决定进一步加快速度。
XHProf Admin方便地用于标识单个用户执行的常用繁重功能。 例如,在Bitrix中,每次从一个阶段转移到另一个阶段(交货,付款,联系方式等)下订单时,都会调用许多功能来控制购物篮的完整性等。这些阶段分别进行概要分析,然后一起显示在报告中比较一下。 这些功能的结果可以被缓存,从而大大加快了各个阶段之间的过渡时间。
总结
结果,我们在更新Bitrix时下订单的阶段就消除了速度下降,同时分析了站点的其他部分并加快了速度。
我们有时会在项目上使用XHProf Admin作为更直观的GUI。
指向XHProf管理员的文档链接:
谁对代码优化主题和对此感兴趣的工具感兴趣,请在注释中编写。