首页 >后端开发 >php教程 >php级级别的性能优化

php级级别的性能优化

Joseph Gordon-Levitt
Joseph Gordon-Levitt原创
2025-02-08 08:59:10883浏览

blackfire:在您的宅基地改进的应用程序中的精确定位和固定性能瓶颈

>

PHP-level Performance Optimization with Blackfire

>键洞察:

BlackFire是一个有力的工具,用于识别和解决应用程序中的性能瓶颈,尤其是使用Homestead改进的应用程序。
    了解Blackfire的图(参考轮廓,独家时间,包容时间,热路径)对于确定性能排水至关重要 - 无论是过度的内存使用情况,CPU时间还是整体活动。
  • >
  • 本文展示了Blackfire在优化多图库博客方面的应用程序。 它突出了瓶颈的识别(例如,PDOExecute)和实施解决方案(例如分页)以提高性能。 在整个应用程序的生命周期中,对黑火进行连续的性能测试至关重要。将这些测试集成到您的CI/CD管道中(Blackfire Premium Plan提供的功能)可显着提高效率。
  • (本文是建立示例多图库博客应用程序的系列的一部分,以进行性能基准和优化。在此处访问存储库。
  • >这篇文章是基于先前对黑火的介绍,证明了其在识别和解决绩效问题方面的实际应用。 我们将使用它来分析我们的样本项目,针对立即改进的区域。 如果您使用的是改进的宅基地(建议进行),则应该已经设置了黑火。 不需要以前的黑火知识。
理解黑火指标:

在开始之前,让我们定义Blackfire性能图中使用的关键术语:

>

参考资料:您应用程序的初始性能基线。将随后的概况与该基线进行比较以衡量改进。

独家时间:仅在特定函数/方法中花费的时间,不包括在其函数中所花费的时间。

    包容性时间:
  • >执行函数所花费的总时间,包括在其所有称为函数上花费的时间。 >
  • 热路径:
  • 分析过程中应用程序中最活跃的部分,通常指示资源消耗高的领域(内存或CPU)。
  • 设置Blackfire:
  • 创建一个Blackfire帐户。 您的帐户页面提供了配置所需的令牌和ID。 该文件在底部包含占位符:

>不按下这些行,并用您的帐户详细信息替换占位符值。>

  1. >安装黑火镀铬扩展。此扩展主要用于手动分析,这在大多数情况下都是常见的。 可以使用其他集成(请参阅此处的完整列表)。
  2. >
用黑火优化

:一个案例研究>

>我们将基准为主页 - 任何网站的关键页面。在这里加载时间缓慢直接影响用户体验和跳出率。虽然可以测试其他页面(例如,图像上传),但通常优先考虑读取性能。

我们的初始应用程序按年龄按负载和分类所有画廊。 要配置文件,打开主页,单击“黑火扩展”按钮,然后选择“配置文件!”。

>

初始配置文件结果:

>消耗了包含时间的100%(深色粉红色部分),表明它是主要的瓶颈。 虽然其他方法可能显示出更大的浅粉红色条(包括时间),但这些方法代表其依赖功能的累积时间。 深色粉红色部分代表需要立即注意的功能。

切换到RAM模式表明,Twig渲染消耗了RAM的大部分(约40MB)。鉴于大量数据呈现。PDOExecute>

热路径(厚边界)清楚地突出了瓶颈。 密集的节点(花费时间的节点)也可能表明问题,即使不是热路径的一部分。 PHP-level Performance Optimization with Blackfire >分析表明,

>和

(高RAM使用)是由在主页上加载所有画廊引起的。解决方案:实施分页。

PDOExecute实现分页:unserialize

> 常数

,将其设置为诸如12的值。
  1. 修改画廊获取过程以使用分页:> PER_PAGE HomeController

  2. >将javascript添加到家庭视图中,以进行懒惰加载:

    >

<code class="language-yaml"># blackfire:
#     - id: foo
#       token: bar
#       client-id: foo
#       client-token: bar</code>
>为懒惰加载画廊添加新方法:
性能比较:
<code class="language-php">$galleries = $this->em->getRepository(Gallery::class)->findBy([], ['createdAt' => 'DESC'], self::PER_PAGE);</code>
    实施分页后,
  1. 重新运行探查器会产生重大改进:> HomeController
<code class="language-html+php">{% block javascripts %}
    {{ parent() }}

    
{% endblock %}</code>

>记忆使用率减少了十倍,并且加载几乎是瞬时的。 新的瓶颈是开发环境的结果。切换到生产模式进一步提高了性能:DebugClass

结论: >该应用程序的性能大大提高,页面加载时间降至58ms。 进一步的优化是最小的。 强烈建议使用Blackfire的常规性能测试至关重要,并且将其集成到您的CI/CD管道中(可与Blackfire的Premium Plan一起使用)。 PHP性能优化的

经常询问问题(FAQ):

>

提供的FAQ部分在很大程度上保持不变,因为它提供了与PHP性能优化相关的有价值的信息。 它准确地涵盖了监视工具,常见问题,优化技术,可伸缩性和最佳实践等主题。

以上是php级级别的性能优化的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn