[作者:阿提什·戈斯瓦米]{class="badge informative" title="阿提什·戈斯瓦米"}

配置数据库探查器

Commerce数据库探查器显示页面上实施的所有查询,包括每个查询的时间以及应用了哪些参数。

步骤1:修改部署配置

修改<magento_root>/app/etc/env.php以添加对数据库探查器类的以下引用:

        'profiler' => [
            'class' => '\Magento\Framework\DB\Profiler',
            'enabled' => true,
        ],

下面是一个示例:

 'db' =>
  array (
    'table_prefix' => '',
    'connection' =>
    array (
      'default' =>
      array (
        'host' => 'localhost',
        'dbname' => 'magento',
        'username' => 'magento',
        'password' => 'magento',
        'model' => 'mysql4',
        'engine' => 'innodb',
        'initStatements' => 'SET NAMES utf8;',
        'active' => '1',
        'profiler' => [
            'class' => '\Magento\Framework\DB\Profiler',
            'enabled' => true,
        ],
      ),
    ),
  ),

步骤2:配置输出

在Commerce应用程序引导文件中配置输出;这可能是<magento_root>/pub/index.php,或者它可能位于Web服务器虚拟主机配置中。

以下示例在三列表中显示结果:

  • 总时间(显示运行页面上所有查询的总时间)
  • SQL (显示所有SQL查询;行标题显示查询计数)
  • 查询参数(显示每个SQL查询的参数)

要配置输出,请在引导文件的$bootstrap->run($app);行后面添加以下内容:

/** @var \Magento\Framework\App\ResourceConnection $res */
$res = \Magento\Framework\App\ObjectManager::getInstance()->get('Magento\Framework\App\ResourceConnection');
/** @var Magento\Framework\DB\Profiler $profiler */
$profiler = $res->getConnection('read')->getProfiler();
echo "<table cellpadding='0' cellspacing='0' border='1'>";
echo "<tr>";
echo "<th>Time <br/>[Total Time: ".$profiler->getTotalElapsedSecs()." secs]</th>";
echo "<th>SQL [Total: ".$profiler->getTotalNumQueries()." queries]</th>";
echo "<th>Query Params</th>";
echo "</tr>";
foreach ($profiler->getQueryProfiles() as $query) {
    /** @var Zend_Db_Profiler_Query $query*/
    echo '<tr>';
    echo '<td>', number_format(1000 * $query->getElapsedSecs(), 2), 'ms', '</td>';
    echo '<td>', $query->getQuery(), '</td>';
    echo '<td>', json_encode($query->getQueryParams()), '</td>';
    echo '</tr>';
}
echo "</table>";

第3步:查看结果

转到店面或管理员中的任何页面以查看结果。 下面是一个示例:

示例数据库分析器结果

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c