Comment détecter les scripts qui font trop d’écritures dans votre base de donnée WordPress

Tous les plugins WordPress ne sont pas optimisés (loin de là meme) et si vous avez un site à fort trafic ou un hébergement d’entrée de gamme, votre site WordPress peut devenir très lent, voire carrément meme planter si l’une de vos extensions est trop gourmande en écriture. On vous explique dans cet article comment identifier le fautif.

Des performances WordPress dégradées par des sauvegardes automatiques en base de donnée toutes les secondes

L’un de mes sites a un trafic d’environ 1,5 millions de pages vues par mois et malheureusement je traine encore dessus du code fait main datant de 2009. Si j’ai réussi à mettre presque tous mes bidouillages sous forme de plugins ou de fichier séparés, il n’est pas rare qu’en ouvrant un fichier je pousse un cri d’effroi en réalisant que j’avais codé une fonction avec les pieds.

Très récemment j’ai été alerté par un collègue que l’un de mes plugins déclenchait des sauvegardes en base de données toute les secondes via le hook save_post et par ricochet des appels API vers un service externe. Seulement comment trouver le ou les fautifs de cette surcharge ?

Après quelques minutes de recherches manuelles infructueuses, je me suis dit que je gagnerais beaucoup de temps avec quelques lignes de code.

La création, la mise à jour et la suppression de meta données déclenchent le hook save_post

Comme le nombre de nouveaux articles publiés sur ce site par jour est assez modeste, la seule raison de déclencher le hook save_post était de créer, modifier ou supprimer des meta données rangées dans la table wp_postmeta via les fonctions update_post_meta et delete_post_meta

Après un petit tour sur la documentation WordPress, j’ai fini par trouver les 3 actions que je pouvais hooker pour savoir exactement ce qu’il se passait en base de donnée :

  • added_post_meta
  • updated_post_meta
  • et deleted_post_meta

Etant trop feignant pour coder un vrai plugin, je me suis contenté de créer un petit fichier nommé functions-log-metadata.php inclus depuis le fichier functions.php de mon thème en y ajoutant via la ligne suivante :

include ('functions-log-metadata.php');

Code PHP pour logger tous les déclenchement d’écriture de meta données dans WordPress

Voici le contenu du fichier en question :

S’abonner
Notifier de
guest
Commentaires
le plus populaire
le plus récent le plus ancien
Inline Feedbacks
View all comments