— Publié le 28 décembre 2019 —
Cet été, nous avons travaillé sur un site web avec près de 150 pages, des pages longues et un design compliqué. Peu de temps après la mise en production, nous recevons un message d’OVH qui nous dit que la base de données est pleine. Pleine ? Hum, il n’y a qu’un site et donc ça ne devrait peser que 30 Mo sur les 200 disponibles dans notre offre. Et qui dit base de données pleine, elle passe en « lecture seulement » donc on ne peut plus se connecter au backoffice WordPress.
Petite recherche histoire de comprendre car même si nous accordons beaucoup d’importance à la sécurité de nos sites, on n’est jamais à l’abri d’une intrusion :
- un virus avec des injections de fichiers ? Non…
- la table des commentaires qui aurait été spammée ? Non…
- Il s’agit de la table wp_posts qui est anormalement lourde.
En cherchant davantage, nous voyons que ça vient des révisions et sauvegardes automatiques. En effet, certaines pages nous ont demandé tellement de travail, qu’on compte jusqu’à 120 révisions, sans compter toutes les sauvegardes automatiques que WordPress fait toutes les 60 secondes. Et au final, tout ça pèse lourd !
Vous pouvez voir le nombre de révisions ici :
Pour remédier à ce problème, il nous a fallu vider la table des révisions. Si on veut aller plus loin, on peut également désactiver les révisions. Nous allons voir tout ça.
Supprimer les révisions de la table
N’ayant plus d’accès au backoffice, il nous était impossible d’utiliser un plugin. Nous avons donc dû intervenir directement dans la base de données.
Bien sûr, effectuez une sauvegarde de vos fichiers et de la base avant toute intervention.
Une fois votre sauvegarde effectuée, connectez-vous à PHPMyAdmin et exécutez la requête SQL suivante : attention, si vous avez changé le nom de vos tables lors de l’installation de WordPress, pensez à mettre le bon préfixe dans notre exemple en replaçant « wp_ » :
Vous pouvez désormais rafraîchir votre base et regarder le poids de votre table. Si vous êtes chez OVH, il faut ensuite lancer le « recalcul de votre quota » au niveau de la base de données. Une fois ce chiffre revenu à la normale, vous pourrez à nouveau accéder au backoffice WordPress.
Modifier le paramétrage des révisions
Normalement, ce problème n’arrive que lors d’un développement long. Mais si vous générez de nombreuses révisions en mettant à jour vos contenus, vous avez plusieurs possibilités :
- Désactiver complètement les révisions
- Limiter les révisions
- Modifier le délai des sauvegardes automatiques
Désactiver complètement les révisions
Si vous ne restaurez jamais une ancienne version de votre page ou de votre article, vous pouvez peut-être désactiver complètement les révisions.
Pour ce faire, via votre FTP préféré, éditez votre fichier wp-config.php qui se trouve à la racine de votre WordPress et collez le code suivant en haut du fichier:
Pour les réactiver, soit vous supprimez cette ligne, soit vous remplacez false par true.
Limiter les révisions
Une alternative moins radicale que la suppression est la limitation. SI vous souhaitez ne conserver que les 3 dernières révisions, idem, ouvrez votre fichier wp-config.php et collez le code suivant :
Modifier le délai des sauvegardes automatiques
Par défaut, WordPress effectue une sauvegarde de votre travail toutes les 60 secondes, ce qui est pratique si vous avez une coupure de connexion. Si vous souhaitez augmenter de délai, toujours dans le fichier wp-config, voici la ligne à copier / coller pour faire une sauvegarde toutes les 10 minutes, soit 600 secondes :
Conclusion
Voilà, des manipulations simples pour retrouver une base de données de taille convenable sans avoir besoin de changer d’offre chez votre hébergeur. Nous espérons que cela vous sera utile.
Si vous avez des questions, posez-les en commentaires ci-dessous.
Et n’hésitez pas à partager vos propres retours d’expérience !
Le code pour la limitation des révisions est un super tuyau, merci Marine ! #bzhpower
bonjour,
petite question
si j’ai une table qui s’appelle non pas wp_posts mais wp_*******_posts , est ce que la commande dans config.php est la même pour désactiver complètement les révisions?
define( ‘WP_POST_REVISIONS’, false ); ou autre?
merci
Il faut remplacer WP_POST par le nom de votre table alors.