Nouveau sujet Répondre Imprimer Syndication RSS 2.0

[Suggestion] Concernant le cache FTP...

Un cache PHP bien emmerdant.
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 09 Janvier 2008, 22:36
Plop,

J'ai remarqué un truc, concernant le cache FTP. Ou même les fonctions de PHP pour les fichiers (filemtime(), filectime(), file_exists(), etc).

En effet, les données sont conservées en cache lors du premier appel à une fonction de ce genre par PHP, et du coup, même si le fichier n'xiste pas, ou modifié, file_exists(), filemtime(), etc, renverront les valeurs qu'elles renvoyaient au début du script, soit... Oui, soit true et la non pas la date de derniere modif par exemple.

Le truc à faire, c'est donc de "détruire" le cache au début du script du forum, enfin je crois, par le biais de la fonction clearstatcache().

Comme ca, on peut modifier par exemple les TPLs si on utilise le cache FTP, et du coup mettre à jour en temps réel les gabarits, sans avoir à prier du vaudou pour que le cache soit mis à jour automatiquement.

Non ?


 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 09 Janvier 2008, 22:43
Et a quel moment faut executer clearstatcache() ?


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
Message édité 1 fois, dernière édition par Talus, 09 Janvier 2008, 22:46     Lien vers ce message 09 Janvier 2008, 22:46
Idéalement, je pense que ce serait au début, dans start.php (puisque tes class de cache sont des class statiques, car variant suivant le modèle appelé...)


 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 09 Janvier 2008, 23:44
Ca risque d'être lourd de faire un clearstatcache à chaque fois non ? D'autant plus que jusque là j'avais jamais eu besoin de le faire. Il y a moyen de détecter quand on en a besoin ?


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 10 Janvier 2008, 18:35
Nan, justement. Le truc, ce serait de le lancer une fois au début du script.

Car en fait, avec le cache, si on modifie un des tpl par exemple, et que le parseur teste si le fichier de cache existe, et que si la date de dernière modif est la même, il affichera quand même le cache (mais il changera au bout d'un certain temps). Ce n'est donc pas immédiat en fait...


 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 10 Janvier 2008, 20:03
Ouai, mais ca le fait chez pas grand monde apparemment (tu es le premier on dirait). Donc il y a bien une zone de configuration qui determine ca, dans le ini par exemple. Je regarderai.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
  Lien vers ce message 10 Janvier 2008, 20:35
Ouais, ou alors je suis le premier qui s'en rend compte :D


 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 10 Janvier 2008, 21:36
J'en doute, parce que ça impliquerai que quand tu modifies un template rien n'apparait à l'écran et que quand tu ferais des trucs basique de ton forum comme changer la configuration dans l'admin ou autre il ne se passerait rien.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
Message édité 1 fois, dernière édition par Talus, 10 Janvier 2008, 21:38     Lien vers ce message 10 Janvier 2008, 21:37
Ben si le cache serait regénéré, mais pas immédiatement. Par exemple, quand on rafraichit le menu admin, 'ya bien une histoire de suppression de fichiers cache derrière, non ?

Au moins, ce serait pas mal d'avoir une option "vider tout le cache" ?


 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 10 Janvier 2008, 23:58
Oui enfin c'est quand même très visible quand on met à jour la config du forum et que les changements sont pas pris en compte.

Bref je vais devoir ajouter clearstatcache sur chaque page donc.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
Message édité 1 fois, dernière édition par Talus, 11 Janvier 2008, 11:52     Lien vers ce message 11 Janvier 2008, 11:51
Euh non, ce serait plus sur start.php, et uen seule fois, puisqu'il est appelé partout... Non ? Et en plus, elle sera appelé qu'une fois. Si tu la fous sur toutes les pages, là, ca peut consommer des ressources...


 
Etoile
Avatar de BlackJowy
  • Age : 22 ans
  • Messages : 3459
  • Inscrit : 01 Mars 2007
  Lien vers ce message 11 Janvier 2008, 12:22
Bah ouais mais "En effet, les données sont conservées en cache lors du premier appel à une fonction de ce genre par PHP", donc à chaque appel faut purger pour etre sur quoi :s


"It's backup day today so I'm pissed off. Being the BOFH, however, does have it's advantages. I reassign null to be the tape device — it's so much more economical on my time as I don't have to keep getting up to change tapes every 5 minutes. And it speeds up backups too, so it can't be all bad can it? Of course not." S.Travaglia

 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 11 Janvier 2008, 12:58
Talus : que ce soit dans start.php ou appelé une seule fois dans le cache ça change rien.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Volcan
Avatar de Talus
  • Age : 20 ans
  • Messages : 1548
  • Inscrit : 28 Septembre 2006
Message édité 1 fois, dernière édition par Talus, 11 Janvier 2008, 15:52     Lien vers ce message 11 Janvier 2008, 15:52
Ben comme le cache est une méthode statique, elle est appelée plusieurs fois en fonction du script (sql, tpl, xml, etc), non ? D'ou l'avantage de le foutre dans start. Et à chaque execution du script, ce serait mis à jour en gros. Alors que la solution proposée par Genova, celle de modifier le tout, ce serait que ca soit appelé à chaque fois (pour le TPL, pour le XML, pour le SQL, etc).

A moins que je me gourres ; sinon, à la place, ce serait pas mal comme je l'ai dit d'avoir une option "Vider le cache" dans l'admin pour les TPLs et MAPs... Non ?


 
Chef du projet FSB
Avatar de Genova
  • Age : 22 ans
  • Messages : 14507
  • Inscrit : 16 Septembre 2004
  Lien vers ce message 11 Janvier 2008, 16:00
PHP a des outils prévus pour ce genre de cas de figure, les propriétés statiques :
		if (!self::$clearstatcache)
		{
			clearstatcache();
			self::$clearstatcache = TRUE;
		}


Les fichiers mis en cache dans les template sont déjà suprimable depuis l'administration du cache normalement.


Cause Im as free as a bird now, And this bird you can not change. - Freebird - Lynyrd Skynyrd
There's someone in my head but it's not me. - Brain damage - Pink Floyd
I said baby, you know Im gonna leave you. - Babe I'm gonna leave you - Led Zeppelin
Father ? yes son, I want to kill you - The end - The Doors
 
Répondre


.