Dotclear 1.2.7 crashe votre serveur ? Passez à Dotclear 2 (et bricolez les tags)

Mon serveur a été très instable récemment. Et pas des petits plantages : le gros modèle, celui où il ne répond plus du tout à rien et nécessite un redémarrage complet.

Après des jours d’enquête minutieuse, j’ai découvert qui faisait planter mon serveur une fois par jour. Ce n’était pas mon jeu de simulation en ligne ou mon test de personnalité, très gourmands en ressources. Ce n’était pas ma musique MP3 en téléchargement, avec des ficheirs forcément assez lourds. Ce n’était pas mes applications de gestion de flux RSS photo ou mes blogs BD ou photos bien chargés.

C’était un banal blog en dotclear 1.2.7. Celui-là même que vous parcourez. J’ai donc dû le mettre à jour, et au passage trouver une solution pour récupérer les tags du plugin métadonnées de billets.


Mon serveur a été très instable récemment. Et pas des petits plantages : le gros modèle, celui où il ne répond plus du tout à rien et nécessite un redémarrage complet.

Après des jours d’enquête minutieuse, j’ai découvert qui faisait planter mon serveur une fois par jour. Ce n’était pas mon jeu de simulation en ligne ou mon test de personnalité, très gourmands en ressources. Ce n’était pas ma musique MP3 en téléchargement, avec des ficheirs forcément assez lourds. Ce n’était pas mes applications de gestion de flux RSS photo ou mes blogs BD ou photos bien chargés.

C’était un banal blog en dotclear 1.2.7. Celui-là même que vous parcourez.

Je ne sais pas si c’était une attaque de DOS (Denial of Service) dûe à des spammeurs ou un bug autre. Quoi qu’il en soit, il a suffi de le couper quelques jours pour que mon serveur reparte comme en 40… euh… 45.

Mise à jour en 2.1 : le problème des tags

Après un an d’atermoiements, j’étais donc contraint et forcé d’envisager la mise à jour de mon Dotclear en version 2. Heureusement, un plugin d’importation permet de récupérer tout le contenu des billets d’un blog précédent.

La seule difficulté majeure a été d’importer les tags générés par le plugin métadonnées de billets de la 1.2.7. Pour que ceux-ci soient intégrés au site, j’ai dû ruser avec MySQL. J’ai d’abord constaté que la base meta de dc2 (qu’on appellera dc2_meta) était structurée de manière proche de la base post_meta de dc1. Plus précisément :

dc1_post_meta : 
meta_id     post_id     meta_key     meta_value
     2             64           tag            photoshop
dc2_meta :
meta_id        meta_type     post_id
photoshop          tag             64


Il suffisait donc d’importer les bonnes colonnes de la table dc1 dans la table dc2, me dis-je. Me voilà donc parti pour remplir la table avec la requête :

INSERT INTO dc2_meta (
SELECT meta_value,meta_key,post_id
FROM potlatch_post_meta
GROUP BY meta_value,meta_key,post_id)


J’ai donc testé ma merveille, et… rien. Enfin presque : si je pouvais afficher le nuage de tags et visualiser les billets par tag, aucun mot-clé ne s’affichait dans le contenu d’un billet. J’ai alors découvert que l’affichage des tags dans le billet était géré par un champ beaucoup plus complexe, le champ post_meta de la table dc2_post. Et là, la syntaxe est beaucoup trop complexe pour automatiser les modifications.

C’est horrible, mais comment faire alors ?

C’est là qu’on bascule dans le bricolage. Il existe un outil pour renommer un tag sur tous les billets dans le menu Blog > Tags de Dotclear. Un effet secondaire du renommage, c’est qu’il met à jour le champ post_meta de chacun des billets qui partage ce tag. Il suffit donc de prendre les principaux tags du site, de les renommer provisoirement (ex. MP3 devient MP4), puis de leur redonner leur nom d’origine, pour que tous les billets ayant ce tag soient mis à jour.

En répétant la manip sur les 10 plus gros tags, on peut déjà renseigner 90% de ses billets. Pour les 10% non mis à jour, on peut soit y aller de manière méthodique, mais c’est une grosse perte de temps. Ou alors, on va régulièrement sélectionner la liste des billets qui ont un champ post_meta NULL pour cibler ceux-ci (même s’il faut retrouver leurs tags). Allez, je vous aide avec la requête SQL qui affichera les tags non encore traités et le nombre de posts concernés :

SELECT COUNT(p.post_id),t.meta_id 
FROM dc2_post p , dc2_meta t
WHERE p.post_meta IS NULL AND t.post_id=p.post_id 
GROUP BY t.meta_id


Voilà, il ne reste plus qu’à  vérifier que ces tags s’affichent correctement dans le billet. Bonne mise à jour !

Outil de référencement professionnel - essai gratuit Ce contenu a été publié dans Développement PHP, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

Une réponse à Dotclear 1.2.7 crashe votre serveur ? Passez à Dotclear 2 (et bricolez les tags)

  1. Post scriptum : le changement de version de DC n’a pas suffi à rendre mon serveur stable. Il a tenu une semaine avant de se remettre à planter à nouveau.
    Par contre lorsque mon hébergeur a procédé à une augmentation de sa mémoire vive, les plantages se sont arrêtés. Je pense être tiré d’affaire, inch’Allah.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *