Toutes les clefs pour réussir dans le e-commerce

Mes modules Prestashop

Repérer les requêtes ralentissent votre boutique prestashop

Voici un override qui va vous permettre de savoir très simplement quelles sont les requêtes sql qui ralentissent le plus votre boutique.

On me demande souvent d’optimiser des boutiques Prestashop. La première étape consiste à travailler sur le chargement des éléments externes comme je l’explique ici, si votre boutique reste trop lente après avoir appliqué l’ensemble de ces optimisations il va falloir étudier plus en profondeur le site, et repérer les requêtes les plus lentes est une des étapes principales de ce processus.
Il est possible de le faire en modifiant certaines valeurs des fichiers de configuration du serveur mais selon votre hébergement vous n’y avez pas forcément accès.

Pour simplifier les choses j’ai donc créé un override qui va faire le travail tout seul.
Le voici:


<?php
/*override/db/Db.php*/
abstract class Db extends DbCore {
/**
* Execute a query and get result ressource
*
* @param string $sql
* @return mixed
*/
public function query($sql)
{
$before=microtime(true);
if ($sql instanceof DbQuery)
$sql = $sql->build();

$this->result = $this->_query($sql);

$after=microtime(true);
$duration=$after-$before;

/*
* Toutes les requêtes dont le temps d’exécution est supérieur à 0.2 secondes
* seront stoquée dans le fichier log
*/
if($duration>0.2)
$this->writeLog($sql,$duration);

if (_PS_DEBUG_SQL_)
$this->displayError($sql);
return $this->result;
}

function writeLog($query,$duration) {
$logfile=_PS_ROOT_DIR_."/log/query_logs.txt";
$fp=fopen($logfile, "a");
fwrite($fp,"##############");
fwrite($fp, "\n".$query."\n".$_SERVER['PHP_SELF']."\n".$duration."\n");
fwrite($fp,"##############");
fclose ($fp);
}
}

?>

Une fois cet override en place sur votre site, il ne vous reste plus qu’à attendre un peu et vous retrouverez les requêtes les plus longues dans le fichier /log/query.logs.txt.

Ps: ne laissez pas cet override trop longtemps car il peut lui aussi ralentir votre boutique. Il n’est là que pour vous permettre de récolter des informations sur une période donnée.

Poster un Commentaire

3 Commentaires sur "Repérer les requêtes ralentissent votre boutique prestashop"

Recevoir un email pour
avatar
Trier par:   plus récent | plus vieux | Plus de vote
Manuel
Invité

Bonjour,

Dans quel dossier placer cet override ?

J’ai essayé et ça ne fonctionne pas.

Merci de votre aide !

leteint
Invité
leteint

Excellent Merci ! :-)
(pour ceux qui ne sont pas familliers : pensez bien à faire un include_once de l’ancien fichier)
include_once “Db2.php”; par exemple ;

wpDiscuz