[Contribution Atish Goswami]{class="badge informative" title="Atish Goswami"} [PaaS uniquement]{class="badge informative" title="S’applique uniquement aux projets Adobe Commerce on Cloud (infrastructure PaaS gérée par Adobe) et aux projets On-premise."}
Configuration du profileur de base de données
Le profileur de base de données Commerce affiche toutes les requêtes implémentées sur une page, y compris l’heure de chaque requête et les paramètres appliqués.
Étape 1 : modifier la configuration de déploiement
Modifiez <magento_root>/app/etc/env.php
pour ajouter la référence suivante à la classe profileur de base de données :
'profiler' => [
'class' => '\Magento\Framework\DB\Profiler',
'enabled' => true,
],
Voici un exemple :
'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,
],
),
),
),
Étape 2 : configurer la sortie
Configurez la sortie dans le fichier d’amorçage de votre application Commerce. Il peut s’agir d’un fichier <magento_root>/pub/index.php
ou d’une configuration d’hôte virtuel de serveur web.
L’exemple suivant affiche les résultats dans un tableau à trois colonnes :
- Durée totale (affiche la durée totale nécessaire pour exécuter toutes les requêtes sur la page)
- SQL (affiche toutes les requêtes SQL ; l'en-tête de ligne affiche le nombre de requêtes)
- Paramètres de requête (affiche les paramètres de chaque requête SQL)
Pour configurer la sortie, ajoutez les éléments suivants après la ligne $bootstrap->run($app);
dans votre fichier de données d’amorçage :
/** @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>";
Etape 3 : Visualiser les résultats
Accédez à n’importe quelle page de votre storefront ou de votre administrateur pour afficher les résultats. Voici un exemple :