浏览文章

文章信息

后端 Magento2 配置数据库调试器|Configure the database profiler 14701

1、配置

配置代码:

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

文件位置:<magento_root>/app/etc/env.php

'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、输出配置:

配置内容:

    /** @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>";

文件位置:<magento_root>/pub/index.php

一定是在$bootstrap->run($app);之后。

$bootstrap = \Magento\Framework\App\Bootstrap::create(BP, $params);

/** @var \Magento\Framework\App\Http $app */

$app = $bootstrap->createApplication(\Magento\Framework\App\Http::class);

$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、查看结果

你访问任何页面都可以看到输出的数据库调试信息

比如:

原创