使用 Xdebug 进行分析
剖析可让我们了解应用程序中执行的每个脚本或任务的成本。它有助于提供任务耗时的信息,因此我们可以优化代码,减少耗时。
Xdebug 的剖析器默认是禁用的。要启用剖析器,请打开配置文件并添加以下两行:
xdebug.profiler_enable=on
xdebug.profiler_output_dir=/var/xdebug/profiler/
第一行启用剖析器。第二行非常重要,我们在此定义了剖析器文件的输出目录。在执行剖析器时,Xdebug 会将输出文件存储在该目录下。输出文件以名称形式存储,如 cachegrind.out.id
。该文件以简单的文本格式包含所有剖析数据。
现在,我们将对 Laravel 应用程序主页的一个简单安装进行剖析。这是一个清爽干净的安装。现在,让我们在浏览器中打开应用程序,并在末尾添加 XDEBUG_PROFILE=on
,如图所示:
http://application_url.com?XDEBUG_PROFILE=on
加载页面后,将在指定位置生成一个 cachegrind
文件。现在,当我们用文本编辑器打开该文件时,只会看到一些文本数据。
cachegrind 文件可以用不同的工具打开。Windows 的工具之一是 WinCacheGrind。对于 Mac,我们有 qcachegrind。这些应用程序都能以交互形式查看文件数据,便于分析。此外,PHP Storm 也有一个不错的 cachegrind 分析器。在本主题中,我们使用了 PHP Storm IDE。 |
在 PHP Storm 中打开文件后,我们会看到一个类似下面截图的窗口:

如前面的截图所示,我们在上窗格中看到了执行统计信息,其中显示了每个被调用脚本所花费的时间(以毫秒为单位)以及被调用的次数。在下部窗格中,我们看到了调用该脚本的调用程序。
我们可以分析哪个脚本耗时更长,从而优化该脚本以缩短其执行时间。此外,我们还可以找出在某一点上是否需要调用特定脚本。如果不需要,我们就可以移除这个调用。