Dotclear

Vous n'êtes pas identifié(e).

Annonce

13 février 2024 Sortie de Dotclear 2.29

#1 2015-04-25 18:32:13

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Comment désactiver le cache Dotclear pour mon script PHP ?

Salut,

Je viens pour solliciter un coup de main, je sens bien que quelque chose m'échappe.

J'ai réalisé un script qui a pour objectif d'indiquer au visiteur la liste des articles par lesquels il a navigué.
Il s'agit donc d'afficher un contenu dynamique, contenu constamment mis à jour à l'écran.

J'en viens au test de mon script :
- lorsque je navigue d'article en article, je ne rencontre aucun souci de cache, ma liste est bien mise à jour
- en revanche, lorsque je navigue sur la page d'accueil ou sur les pages de catégorie, je dois systématiquement passer par Control + F5 pour visualiser la liste mise à jour

J'ai passé tpl_use_cache à "non", j'ai vidé le répertoire cbtpl de trois façon différentes, j'ai testé le plugin fair use, mais rien n'y fait.

Pourriez-vous m'éclairer, s'il vous plaît ? :-)

Dernière modification par Kysban (2015-05-01 14:15:01)

Hors ligne

#2 2015-04-27 00:28:53

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Pas de piste ?

Hors ligne

#3 2015-04-27 09:44:57

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Un début de piste :
http://fr.dotclear.org/documentation/2. … -templates

Si ça ne fonctionne pas reviens sonner ici !


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#4 2015-04-28 02:06:12

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Dans le lien que tu m'indiques, il est écrit ceci :

Si la valeur tpl_use_cache est à non dans about:config, il n'y aura jamais de mise en cache et les 2 fonctions auront le même comportement.

Or, justement, comme je l'indique dans mon post de départ, j'ai bien mis la valeur de tpl_use_cache à non.

Et à la fin du lien que tu m'indiques, il est écrit ceci :

En forçant le rafraîchissement du cache de votre navigateur (avec les touches Ctrl + F5 ou Ctrl + R) vous devriez voir le second nombre varier alors que le premier nombre restera constant.

Je viens d'effectuer le test sur la Home : avec F5, aucun des deux nombres ne change, et avec Ctrl + F5, les deux nombres varient à chaque fois...

Puis j'ai rétabli tpl_use_cache à oui : dans ce cas, avec F5, les nombres ne changent pas, et avec Ctrl + F5, le premier reste constant et le second varie.


On dirait que passer tpl_use_cache à non n'a aucune incidence...

Même nature de problème ici :
http://forum.dotclear.org/viewtopic.php?id=44000
http://forum.dotclear.org/viewtopic.php?id=44001
http://forum.dotclear.org/viewtopic.php?id=45858

Et sans doute plein d'autres...

Mais de toute façon, d'après ce que j'ai lu à maintes reprises, passer tpl_use_cache à non ne devrait pas être une solution "si le script php est bien conçu".


Cas concret de navigation et de fonctionnement de mon script (pour rappel, seuls les articles m'intéressent) :

Accueil => [le script n'affiche rien] c'est OK
Article A => [le script affiche A] c'est OK
Article B => [le script affiche A, B] c'est OK
Article C => [le script affiche A, B, C] c'est OK
Article B => [le script affiche A, B] pas OK puisque ça devrait être [le script affiche A, B, C, B] et Ctrl + F5 actualise correctement l'affichage.

Dernière modification par Kysban (2015-04-28 03:46:08)

Hors ligne

#5 2015-04-28 11:28:41

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Du coup sans un p'tit bout de code ça va devenir difficile de t'aider.


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#6 2015-04-28 13:22:57

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Je suis autodidacte en PHP, et je pense que je ne maîtrise pas du tout les bonnes pratiques (mon code va sans doute paraître extrêmement scolaire/lourd etc...). Pour autant, hors CMS, ce que je fais fonctionne, peut résister à plusieurs milliers de visiteurs/jour et je n'en demande pas plus. Bref, tout ça pour te demander de ne pas t'arracher les yeux tout de suite.

Voici la partie qui va chercher l'information dans la base de données et qui doit l'afficher.

echo '<div>';

$query_select = "SELECT page, image, titre FROM fig_wishlist WHERE hashunique = '$hashunique' ORDER BY `date` DESC LIMIT 0,10";
$resultat_select=mysql_query($query_select,$base_id);

while ($liste_select=mysql_fetch_array($resultat_select)) 
{
$listepage = str_replace('/','',$liste_select["page"]);
echo '<p><a href="'.$listepage.'"><img src="'.$liste_select["image"].'" />'.$liste_select["titre"].'</a></p>';
}

echo '</div>';

Dernière modification par Kysban (2015-04-28 13:23:48)

Hors ligne

#7 2015-04-28 16:04:17

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Et comment intègres-tu ce code dans le blog ?


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#8 2015-04-28 16:16:44

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Juste avant l'appel du footer, sur chaque page de template.

{{tpl:include src="_wishlist.php"}}

Hors ligne

#9 2015-04-29 20:20:46

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Un petit coup de main ?

Hors ligne

#10 2015-05-01 14:15:30

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Je suis toujours à la recherche d'un petit peu d'aide, s'il vous plaît. ^^

Hors ligne

#11 2015-05-01 16:43:02

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

ça veut dire que tu as autorisé le php dans les templates ce qui est une mauvaise pratique et une mauvaise idée.


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#12 2015-05-01 17:29:04

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Merci d'enfoncer des portes ouvertes, je vais tâcher d'avancer avec ça... lol

Dernière modification par Kysban (2015-05-01 18:50:32)

Hors ligne

#13 2015-05-01 17:35:12

pierrevg
Membre
Inscription : 2005-04-13
Site Web

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Il me semble qu'il est préférable de passer par une fonction dans le _public.php du thème, ou via un plugin spécifique.

Hors ligne

#14 2015-05-01 17:40:27

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

OK, j'ai déjà fait le tuto pour le plugin indiqué ici : http://fr.dotclear.org/documentation/2. … s/tutorial

J'ai également essayé d'ingurgiter ce contenu : http://fr.dotclear.org/documentation/2. … -templates

Et je reviendrai ici.

Dernière modification par Kysban (2015-05-01 18:52:02)

Hors ligne

#15 2015-05-01 20:47:51

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Je récapitule, j'ai tenté deux choses.

#1 Voici la première

Voici ce que j'ai ajouté dans mon _public.php :

$core->tpl->addValue('DivWishList',array('WishList','AfficheWishList'));
 
class WishList
{
	public static function AfficheWishList()
	{

// Je saute une partie du code (stockage et récupération des données de la base)

    return
    '<?php echo \'<div id="wishlist">\';
    while ($liste_select=mysql_fetch_array($resultat_select)) 
    { echo \'<p><a href="\'.$listepage.\'"><img src="\'.$liste_select["image"].\'" />\'.$liste_select["titre"].\'</a></p>\'; }
    echo \'</div>\'; ?>';

	}
}

Et voici ce que j'ajoute dans le code HTML des pages de template :

{{tpl:DivWishList}}

>>>> La fonction AfficheWishList ne renvoie rien du tout, la div est affichée mais son contenu est vide.


#1 Voici la deuxième

$core->tpl->addValue('DivWishList',array('WishList','AfficheWishList'));

class WishList
{
	public static function AfficheWishList()
	{

// Je saute une partie du code (stockage et récupération des données de la base)

    echo '<div id="wishlist">';
    
    while ($liste_select=mysql_fetch_array($resultat_select)) 
    {
    $listepage = str_replace('/','',$liste_select["page"]);
    echo '<p><a href="'.$listepage.'"><img src="'.$liste_select["image"].'" />'.$liste_select["titre"].'</a></p>';
    }
    
    echo '</div>';

	}
}

Et voici ce que j'ajoute dans le code HTML des pages de template :

{{tpl:DivWishList}}

>>>> La fonction AfficheWishList renvoie les données, la div est affichée avec son contenu. Mais deux problèmes :

1- j'ai l'erreur suivante :

Warning: Cannot modify header information - headers already sent by (output started at /home/###/themes/aorakit-1B/_public.php:62) in /home/###/inc/libs/clearbricks/common/lib.http.php on line 297

2- j'ai la confirmation que le problème de cache reste entier


Pouvez-vous me mettre sur la voie s'il vous plaît ?

Dernière modification par Kysban (2015-05-01 21:20:01)

Hors ligne

#16 2015-05-02 09:53:52

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Kysban a écrit :

Pouvez-vous me mettre sur la voie s'il vous plaît ?

Bien entendu.
Regarde de quelle manière est compilé ton bout de template dans le fichier correspondant sous cache/cbtpl/XX/YY/md5sum.php.

Il faut chercher le bon fichier mais après c'est toujours le même.

Je te réponds plus précisément après le repas.

Dernière modification par nikrou (2015-05-02 09:54:45)


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

#17 2015-05-02 13:00:48

Kysban
Membre
Lieu : Paris
Inscription : 2006-04-11

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Merci beaucoup pour ta réponse.

Parles-tu de la première option ou de la seconde ?

Je viens de chercher mon bout de template mais comment identifier qu'il s'agit bien du bon ? Qu'est-ce que c'est censé contenir ?

Par exemple, le dernier est de cette forme : /cache/cbtpl/91/df/91dff3cb8b863686a759f17346a84ca0.php (pas de md5sum.php)

Edit :

OK en fait, je dois chercher le fichier du cache correspondant à mon script compilé ?

Dans ce cas, je vais réintégrer mon script dans le code (je ne peux pas me permettre d'avoir un gros message d'erreur sur l'ensemble des pages de mon site pendant trois jours).

Dernière modification par Kysban (2015-05-02 13:03:14)

Hors ligne

#18 2015-05-02 17:38:00

nikrou
Membre
Inscription : 2007-10-02
Site Web

Re : Comment désactiver le cache Dotclear pour mon script PHP ?

Kysban a écrit :

Merci beaucoup pour ta réponse.

Parles-tu de la première option ou de la seconde ?

Je viens de chercher mon bout de template mais comment identifier qu'il s'agit bien du bon ? Qu'est-ce que c'est censé contenir ?

Par exemple, le dernier est de cette forme : /cache/cbtpl/91/df/91dff3cb8b863686a759f17346a84ca0.php (pas de md5sum.php)

oui c'est bien ce genre de fichier.

Kysban a écrit :

Dans ce cas, je vais réintégrer mon script dans le code (je ne peux pas me permettre d'avoir un gros message d'erreur sur l'ensemble des pages de mon site pendant trois jours).

Je te conseille vivement d'avoir une installation locale. Enfin c'est toi qui vois.

Et pour ce que qui doit être générer, ta méthode AfficheWishList doit générer du php qui va afficher ta liste.

Un exemple simpliste qui récupère les liens de la table dc_link :

$core->addBehavior('publicHeadContent', array('dcWordTreeBehaviors', 'publicHeadContent'));

$core->tpl->addValue('DivWishList',array('WishList','AfficheWishList'));

class WishList
{
    public static function AfficheWishList($params) {
        global $core, $_ctx;

        $query = 'SELECT * from dc_link';
        $_ctx->rs = $core->con->select($query);

        $res = "<?php\n";
        $res .= 'while ($_ctx->rs->fetch()) {';
        $res .= 'echo "<p>", $_ctx->rs->link_href,"</p>";';
        $res .= '}';
        $res .= "\n?>";
        return $res;
    }
}

Quelques ressources :
http://fr.dotclear.org/documentation/2. … es/plugins
http://tips.dotaddict.org/fiche/Clearbr … ion-select (ça date un peu mais c'est toujours valable)


Je préfère être atteint de parkinson plutôt qu'alzheimer : je prefère renverser un peu de ma bière plutôt qu'oublier de la boire !

Présentez vos photos simplement avec Phyxo !

Hors ligne

Vous n'êtes pas identifié(e).

Pied de page des forums

Sites map