Oui en effet c'est un peu violent.
Mais en fait, c'est que la plupart du temps, une mise à jour du plugin (Escal pour ne pas le citer ;-)) fait péter la partie publique.
Et que j'ai régulièrement des appels au secours "Mon site est tout cassé"
Bien sûr un vidage de cache rétabli un bon affichage.
Forcer le vidage de cache ma paraissait donc une bonne idée, d'autant que celui-ci peut devenir assez conséquent.
JC
Le 09/02/2021 à 20:55, Maïeul Rouquette a écrit :
Le 09/02/2021 à 20:46, Jean-Christophe Villeneuve a écrit :
Bonjour
Je voudrais forcer le vidage de cache à chaque mise à jour de mon plugin.
Dans le code PHP d’un plugin, on peut forcer le vidage du cache au
moyen du code suivant :
// On invalide les caches
include\_spip\('inc/invalideur'\);
suivre\_invalideur\("id='$objet/$id\_objet'"\);
ou $objet et $id\_objet indiquent habituellement quel est l’objet
dont la modification entraîne une modification du cache\.
Mais j'ai 2 questions :
- dans quel fichier doit-on mettre ce code ?
- quel "objet" indiquer pour que tout le cache soit vidé ?
Le 09/02/2021 à 21:15, Jean Christophe Villeneuve a écrit :
Merci de ta réponse
Oui en effet c'est un peu violent.
Mais en fait, c'est que la plupart du temps, une mise à jour du plugin (Escal pour ne pas le citer ;-)) fait péter la partie publique.
Et que j'ai régulièrement des appels au secours "Mon site est tout cassé"
Bien sûr un vidage de cache rétabli un bon affichage.
Forcer le vidage de cache ma paraissait donc une bonne idée, d'autant que celui-ci peut devenir assez conséquent.
JC
bah ca pose question tout de même que cela fasse tout péter... normalement il n'y a pas de raison, vu qu'à l'update d'un plugin les chemins sont recalculés, et du coup aussi les cache des squelettes.
Oui je suis d'accord, ça pose question.
Mais où chercher pour trouver l'origine de ce souci ?
JC
Le 09/02/2021 à 21:38, Maïeul Rouquette a écrit :
Le 09/02/2021 à 21:15, Jean Christophe Villeneuve a écrit :
Merci de ta réponse
Oui en effet c'est un peu violent.
Mais en fait, c'est que la plupart du temps, une mise à jour du plugin (Escal pour ne pas le citer ;-)) fait péter la partie publique.
Et que j'ai régulièrement des appels au secours "Mon site est tout cassé"
Bien sûr un vidage de cache rétabli un bon affichage.
Forcer le vidage de cache ma paraissait donc une bonne idée, d'autant que celui-ci peut devenir assez conséquent.
JC
bah ca pose question tout de même que cela fasse tout péter... normalement il n'y a pas de raison, vu qu'à l'update d'un plugin les chemins sont recalculés, et du coup aussi les cache des squelettes.
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.net
Peu importe car il n’y a à ma connaissance que le plugin cachelab qui utilise cette information. Donc tu peux demander suivre_invalideur("mise_a_jour_escal");
La question c’est surtout « comment l’appeler » et une réponse simple serait « dans le pipeline de mise à jour d’un plugin » mais je sais pas si ça existe.
Mais dans le lien pointé par Maieul ya tout ce qu’il faut a priori :
Pour chaque plugin de préfixe `prefixe`, le fichier `prefixe_administrations.php` est lu automatiquement lors de la consultation de la page d’administration des plugins, lorsqu’il y a un changement de version de schéma, ou lors d’une désinstallation.
Si elles sont définies dans ce fichier, les deux fonctions de mise à jour sont alors exécutées :
* `prefixe_upgrade()` : upgrade à une nouvelle version. Reçoit 2 arguments : `$nom_meta_base_version` (la version de schéma du plugin actuellement installé) et `$version_cible` (la version du schéma vers laquelle on fait l’upgrade).
Quelque chose t’a fait penser que tous ces include_spip sont nécessaires ?
Pour tester : inclue cette définition dans ton mes_options et appelle escal_upgrade('a','b'); aussitôt après.
Si ton fauteuil et ton site ne s’effondrent pas dans la minute qui suit et que ça change pas grand chose, en apparence du moins, à la vie de tes voisins non plus, ça pourra paraître correct…
N’oublie pas, alors, de retirer ces 2 lignes de ton mes_options.
Si tes voisins se mettent à pousser des hululements stridents, que le ciel devient violet ou que tiktok se met à réciter la messe en latin, alors ya un truc à corriger.
Je teste en local mais je suis un peu perdu :
La fonction escal_upgrade est déjà définie dans escal_administration.php
Dois-je la laisser ou l’enlever pour la recopier dans mes_options.php ?
C’est juste un moyen de tester ton code avant que spip n’en ait réellement besoin.
Tout moyen pour cela fera l’affaire.
Si ça fait une erreur de double définition, tu l’enlèves de escal_administration le temps du test pour qu’il n’y ait pas une double définition.
Sinon tu t’en fous, tu testes, si ya une erreur dans ton code tu la corriges, puis à la fin quand ya pas d’erreur tu l’enleves de ton fichier d’options et tu la remet dans administration si tu l’en avais enlevé, ou tu y met la version corrigée à la place de la version avant correction.
puis j’ai recalcule la page d’accueil du site local et tout se passe bien à priori , mais je devrais, à mon avis, voir « le cache est vide » dans la page exec=admin_vider et ce n’est pas le cas.
Si j’enlève ce code de escal_administration .php et que je le copie dans mes_options.php, le recalcul de la page me donne une page blanche.
Et sans la ligne escal_upgrade('a','b'); pas de souci.
Si ton site rencontre un problème dans la situation de test, c’est pour attirer ton attention dessus et te permettre de le corriger. Toute la panoplie des outils de debug peut t’y aider, comme vu dans de très nombreuses autres discussions.
Mais après cette suite d’échange, j’ai l’impression que tu ne comprends pas mes indications (ou les posts de maieul) ou ce qu’il y a dans la documentation de spip.net… et que tu ne comprends pas non plus ce que tu fais en suivant mes suggestions.
Mes indications ne sont donc pas adaptées. J’en suis désolé…
Mais je te souhaite bonne chance !
En effet, je ne comprends pas vraiment. Cette fonction m’avait été donnée par Arnaud Bérard à l’époque.
Ce que je ne comprends surtout pas, c’est que ma fonction upgrade sans modification fonctionne bien et que si je la copie sans modification vers mes_options.php et que j’ajoute la fameuse ligne escal_upgrade('a','b');, j’obtiens une page blanche.