Consultez la formation SEO spéciale Wordpress
par WebRankInfo / Ranking Metrics

Messages: 64

Enregistré le: 23 Juin 2008

Message le Ven Mar 20, 2009 11:00

bnj
est t 'il possible de mise en cache de resultat d'un select
merci
Haut
Messages: 57

Enregistré le: 18 Déc 2008

Message le Jeu Avr 09, 2009 0:07

Bonsoir a tous,

Je ne sais pas si cela a été cité. Mais smarty peut répondre a toutes vos questions. Le cache se gère au niveau template. Et il y a une mise en cache (Version html de la page). De plus smarty permet l'utilisation des balise {dynamic} ce qui permet ainsi de laissé dynamic une partie de la page comme un gestionnaire de bannière par exemple. ;)

J'espère que mon post n'est pas hors sujet.

Bonne soiré a vous tous
Haut
Messages: 190

Enregistré le: 31 Mai 2006

Message le Jeu Avr 09, 2009 10:16

mitus a écrit:Bonsoir a tous,

Je ne sais pas si cela a été cité. Mais smarty peut répondre a toutes vos questions. Le cache se gère au niveau template. Et il y a une mise en cache (Version html de la page). De plus smarty permet l'utilisation des balise {dynamic} ce qui permet ainsi de laissé dynamic une partie de la page comme un gestionnaire de bannière par exemple. ;)

J'espère que mon post n'est pas hors sujet.

Bonne soiré a vous tous

Smarty est un moteur de template mais peut être que maintenant il fait aussi cache html, personnellement je ne connaissais pas cette fonctionnalité et je vois mal le rapport entre un moteur de template et un cache html mais pourquoi pas :D.
Haut
Messages: 5311

Enregistré le: 20 Oct 2005

Message le Lun Avr 13, 2009 16:39

J'ai un petit souci, j'obtiens un Parse error: syntax error, unexpected $end in /home/site/www/cache-start.php on line 8...
Dans mon fichier PHP j'ai ça :
Code: Tout sélectionner
<?php
$mb_handle = fopen("feed.xml", "rb");
$mb_flux = '';
if (isset($mb_handle) && !empty($mb_handle)) {
while (!feof($mb_handle)) {
$mb_flux .= fread($mb_handle, 4096);
}
$mb_RSS2Parser = simplexml_load_string($mb_flux);
$mb_racine = $mb_RSS2Parser->channel;
foreach($mb_racine ->item as $mb_element) {
$video_id = $mb_element->id;
$video_nom = $mb_element->nom_video;
$video_titre = $mb_element->petite_description;
$video_description = $mb_element->longue_description;
$video_taille = $mb_element->taille;
$video_duree = $mb_element->duree;
$video_scene = $mb_element->scene;
$video_img = $mb_element->meilleur_thumb;
echo '<div class="post">
<h2><a href="video-'.$video_id.'.html">'.$video_titre.'</a></h2>
<p class="postinfo">Dur&eacute;e : '.$video_duree.' | Taille du fichier : '.$video_taille.'Mo | Nom de fichier : '.$video_nom.'.mpg</p>
<p><img src="http://images/'.$video_nom.'/'.$video_scene.'/'.$video_img.'.jpg" class="alignleft" alt="'.$video_titre.'" title="'.$video_titre.'" />'.$video_description.'</p>
</div>';
if($i == 49) break;
$i++;
}    
}
fclose($mb_handle);
?>

Il doit y avoir quelque chose d'incompatible mais je n'arrive pas à bien comprendre...
Haut
Messages: 57

Enregistré le: 18 Déc 2008

Message le Mer Avr 29, 2009 11:37

petitchevalroux a écrit:
mitus a écrit:Bonsoir a tous,

Je ne sais pas si cela a été cité. Mais smarty peut répondre a toutes vos questions. Le cache se gère au niveau template. Et il y a une mise en cache (Version html de la page). De plus smarty permet l'utilisation des balise {dynamic} ce qui permet ainsi de laissé dynamic une partie de la page comme un gestionnaire de bannière par exemple. ;)

J'espère que mon post n'est pas hors sujet.

Bonne soiré a vous tous

Smarty est un moteur de template mais peut être que maintenant il fait aussi cache html, personnellement je ne connaissais pas cette fonctionnalité et je vois mal le rapport entre un moteur de template et un cache html mais pourquoi pas :D.


Et oui smarty peut metre directement en cache ton html. Il fonctionne avec 2 niveau de cache. Le premier consiste a convertir tes templates (combinaison de html avec du pseudo code smarty) vers des fichiers combinant le php finalle avec le html. Et le 2 eme niveau de cache m'est tes pages html finaux en cache.
Haut
Messages: 7232

Enregistré le: 9 Jan 2004

Message le Mer Avr 29, 2009 12:16

Cela a peut-être déjà été mentionné. J'avoue ne pas avoir lu les 16 pages de discussion ici.

Mais Zend Framework propose une solution de cache qui est pas mal.
http://framework.zend.com/manual/fr/zend.cache.html

Et une raison (de plus) d'utiliser un framework et pas de se contenter de librairies par ci, par la.
http://www.symfony-project.org/jobeet/1_2/Doctrine/en/22
Haut
Messages: 8558

Enregistré le: 14 Mai 2003

Message le Mer Avr 29, 2009 12:49

Smarty est un moteur de templates oui.
Ils ont dû intégrer le cache car c'est une usine à gaz, bcp de traitements (fichiers php de + de 700Ko !).

Ne pas utiliser Smarty, PHP est déjà un moteur de templates:
http://www.massassi.com/php/articles/template_engines/

In short, the point of template engines should be to separate your business logic from your presentation logic, not separate your PHP code from your HTML code.
Haut
Messages: 5311

Enregistré le: 20 Oct 2005

Message le Mer Avr 29, 2009 13:12

Serais-je invisible ? :cry:
Haut
Messages: 8558

Enregistré le: 14 Mai 2003

Message le Mer Avr 29, 2009 17:00

Audiofeeline a écrit:Serais-je invisible ? :cry:

Je vois pas du tout l'erreur pour la ligne 8 8O , une erreur du type c'est souvent pr une accolade fermante manquante mais ton script semble bon.

A tout hazard c'est pas l'espace en trop avant "->" ici:
Code: Tout sélectionner
foreach($mb_racine ->item as $mb_element)

?
Haut
Messages: 5311

Enregistré le: 20 Oct 2005

Message le Mer Avr 29, 2009 17:04

Je ne crois pas puisque ça fonctionne sans le cache. :/
Haut
Messages: 776

Enregistré le: 23 Oct 2006

Message le Mar Mai 05, 2009 23:00

Audiofeeline a écrit:J'ai un petit souci, j'obtiens un Parse error: syntax error, unexpected $end in /home/site/www/cache-start.php on line 8...
...


Il semblerait qu'il manque une variable $end. Je ne vois pas cette variable dans ton code. Je vois que tu ouvres un fichier xml, l'erreur ne se situerait pas dans ce fichier ? Je dis ça parce que des fois quand j'ai une telle erreur c'est dans un autre fichier que je la trouve. En effet le numéro de ligne de l'erreur peut correspondre au numéro de ligne du fichier au complet c'est à dire si tu as fait appel à d'autres fichiers, par exemple un
Code: Tout sélectionner
<?php
include('header.php'); // 20 lignes de code
/* ici j'ai 15 ligne de code */
include('envoie_mail.php'); // 50 lignes
etc....
?>

que tu as un Parse error à la ligne 15 ben il y a de forte chance que l'erreur se trouvera dans le header.php même si le Parse Error t'affiche ligne 15 du fichier tartempion.php (c'est ce que j'ai constaté).

Je ne sais pas si ça peut t'aider...
Haut
Messages: 133

Enregistré le: 9 Sep 2006

Message le Mar Mai 05, 2009 23:22

Tu as essayé si ca vient pas de ton raccourci sans les { } dans
Code: Tout sélectionner
      if($i == 49) break;


?
Haut
Messages: 24

Enregistré le: 21 Sep 2005

Message le Lun Mai 18, 2009 17:25

Bonjour.
J'utilise ce script pour mon site et j'en suis très content. :wink:

Il y à juste une chose que je n'arrive pas à faire.
J'ai une page qui doit rester dynamique et je ne sais pas comment faire pour ne pas qu'il ne soit pas mis en cache.
Pourtant je sais que ça doit être facile mais bon, j'ai beau tester des if() ici et la, rajouter des parametres à
Code: Tout sélectionner
if (@filemtime($fichierCache)<time()-(3600*24*360))
mais rien n'y fait.
Je suis pas un pro du php, loin de là, je me débrouille c'est tout mais cette fois, je crois que j'ai besoin d'aide. :(

Edit: C'est bon j'ai trouvé tout seul. :P
J'ai placé des if() au bon endroit :
Code: Tout sélectionner
if($page != "sitemap.html") {
   ob_start(); // on démarre la bufferisation de la page: rien de ce qui suit n'est envoyé au navigateur
   }

et
Code: Tout sélectionner
if($page != "sitemap.html") {
   $contenuCache = ob_get_contents(); // on recuperre le contenu du buffer
   ob_end_flush();// on termine la bufferisation
   
   $fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
   if ($fd) {
      fwrite($fd,$contenuCache); // on ecrit le contenu du buffer dans le fichier cache
      fclose($fd);
               }
                                         }
Haut
Messages: 19

Enregistré le: 12 Juil 2009

Message le Jeu Juil 16, 2009 0:54

Juste comme ça, pour la suppression du cache utilisez plutot unlink !
plus court, plus rapide, plus léger que de faire des appel ftp à chaque fichier rencontré.

Et pour faire encore plus simple, on peut aisément remplacer ob_*
par file_get_contents en s'assurant bien sur de la validité des chemins des images,
(après tout dépend ou est placé le système de mise en cache)
quoi que.. y a toujours moyen de d'appliquer un petit str_replace avec http://...
Haut
Messages: 214

Enregistré le: 30 Avr 2007

Message le Ven Juil 17, 2009 14:03

lol les vieilles méthode alors en quelque ligne voici comment créer un système de cache le plus simplement du monde:

http://www.journaldunet.com/developpeur/tutoriel/php/060515-php-cache- ... ur-2.shtml

;)
Haut
Messages: 300

Enregistré le: 3 Juin 2005

Message le Jeu Juil 23, 2009 16:37

Je confirme que la méthode du jdn est simple et fonctionne parfaitement...
Haut
Messages: 190

Enregistré le: 31 Mai 2006

Message le Jeu Juil 23, 2009 17:26

Sauf qu'il manque encore le gz, et le 304 voir le expire mais c'est vrai que par rapport au code de se feed c'est top :D
Haut
Messages: 487

Enregistré le: 18 Mar 2008

Message le Jeu Aoû 06, 2009 12:31

La méthode de kitten13 est sympa, par contre je suis embêté avec les membres.
La construction du cache se lance si la page n'existe pas ou si elle a expiré, malheureusement si c'est un membre qui créé le cache, et bien quand on regarde la page mise en cache on se retrouve avec son profil d'affiché sur la page. XD

En gros j'aimerai bien lancer le cache, qu'importe la personne (membre ou visiteur), je tenterai bien de lancer le cache après l'affichage du header mais si je le coupe avant la fin de ma page, le code 'normal' va reprendre sa route ?
Haut
Messages: 190

Enregistré le: 31 Mai 2006

Message le Jeu Aoû 06, 2009 12:50

Sinon une des solutions utilisées pour ton problème de membre c'est de faire la personnalisation des pages classique en JS et de ne pas cacher les pages trop personnalisé : Liste des articles de l'utilisateur ... Tout ce qui touche à de l'admin en gros.

Bon courage ;)
Haut
Messages: 487

Enregistré le: 18 Mar 2008

Message le Jeu Aoû 06, 2009 13:20

Merci du conseil petitchevalroux. ;)
Je ne connais pas trop le JS, j'ai donc fait avec les moyens du bord.

Finalement vu que c'est une minorité de personnes (les membres) qui font vivre le site, je leur laisse le full acces 'en live' et pour tous les visiteurs sur les pages où ça ne change pas des masses ou qui consomme pas mal de ressource -> le cache.
Haut
Messages: 190

Enregistré le: 31 Mai 2006

Message le Jeu Aoû 06, 2009 13:50

Ah oui c'est une troisième solution à laquelle je n'avais pas pensé bien joué ;)
Haut
Messages: 1

Enregistré le: 29 Aoû 2009

Message le Sam Aoû 29, 2009 11:44

Bonjour,

le sujet est fermé depuis quelques temps mais j'aurai une question. Le système de cache est super mais dans une de mes pages je créé une image antispam classique mais du coup il me la met dans le cache...
Donc ce que je souhaiterai savoir c'est si on peut ne pas mettre une petite partie hors cache sachant que cette partie est entre les ob_start(); et le ob_end_flush();

Merci si quelqu'un voit ce message et peut y répondre.
Haut
Messages: 14

Enregistré le: 2 Nov 2009

Message le Lun Nov 02, 2009 15:22

Regarde le manuel de la fonction ob_start() : http://php.net/manual/en/function.ob-start.php

Tant que j'y suis, j'ai une question : comment éviter la création intempestive de caches ? Je m'explique :
Nos pages mises en cache sont de la forme .../index.php?page=x avec x qui varie de 1 à n. La mise en cache doit se faire uniquement si la page existe. Il faut donc ajouter un test.

Le problème c'est que dans mon cas, je fais un test du style :

if($_GET[page] est correct)
on affiche la page
else
on affiche index.php?page=1

Le pb ici c'est qu'il y a tout de même création en cache de la page non autorisée par exemple avec x > n. Vous me direz de faire ce test avant le traitement du cache, mais le souci c'est qu'il doit se faire justement en cache, car je ne connais pas avant le nombre de pages.
Si quelqu'un a compris qq chose et à une solution, je suis preneur !!
Haut
Messages: 14

Enregistré le: 2 Nov 2009

Message le Mer Nov 18, 2009 18:17

Bon, j'ai finalement trouvé une solution. J'avais tout simplement mal conçu le site. Sinon, si ça intéresse quelqu'un, j'ai mis en place un système de templates avec caches (ou sans cache). Le tout en MVC (Model, View, Controller) qui marche nickel.
Haut
Messages: 8558

Enregistré le: 14 Mai 2003

Message le Mer Nov 18, 2009 18:24

@Furinkazan, un système de cache MVC ? Tu ne veux pas dire simplement un système de cache POO ? Car je vois pas comment du cache peut être MVC...
Haut
Messages: 14

Enregistré le: 2 Nov 2009

Message le Ven Nov 27, 2009 12:44

Je défini un template avec ou sans cache dans un fichier exemple.php. Ce template est effectivement un objet qui contient ce que l'on veut par exemple :
- le fichier template associé $exemple->setTemplate($_PATH_TO_TPL."exemple.tpl.php");
- un titre : $exemple->set('title', "le titre");
- un array de trucs : $exemple->set('list', array("lien1", "lien2", "lien3"));
- ...
Dans ce fichier on effectue les traitements. (le Controlleur). Par exemple les if ( isset ( $_POST['valid'] ) ) ...

Le template associé ne contient que les balises <div> et autres dans un fichier exemple.tpl.php. (Le Modèle).
Dans ce fichier on affiche les objets contenus dans le template. Par exemple le titre : <DIV id="titre"><?=$title?></DIV>

Le style est dans un fichier css. (la Vue).

Si c'est un template avec cache, bein on affiche le cache au lieu de faire le traitement du Controlleur.

Je posterais ici un exemple simple sous peu pour plus de détails.
Haut
Messages: 8558

Enregistré le: 14 Mai 2003

Message le Ven Nov 27, 2009 12:57

@Furinkazan
Comme ce système de templates: http://www.massassi.com/php/articles/template_engines/

Mais tu as juste le V et C de MVC, c'est pour ça que je m'étonnais de MVC ;)
N.B.: évite les short tags <?=$title;?> préfère plutôt <?php echo $title;?>
Haut
Messages: 968

Enregistré le: 14 Jan 2008

Message le Ven Nov 27, 2009 13:38

spout a écrit:N.B.: évite les short tags <?=$title;?> préfère plutôt <?php echo $title;?>

Et pourquoi donc ? Y a t'il une différence de vitesse ? des bugs ou autres ?

Ou juste un code pas forcement portable sur d'autres serveurs pas configurés pour comprendre les short tags ?
Haut
Messages: 14

Enregistré le: 2 Nov 2009

Message le Ven Nov 27, 2009 14:55

spout a écrit:@Furinkazan
Comme ce système de templates: http://www.massassi.com/php/articles/template_engines/

Ouais en fait je me suis basé sur ce site pour mes templates, en l'améliorant un peu ^^.

spout a écrit:Mais tu as juste le V et C de MVC, c'est pour ça que je m'étonnais de MVC ;)
N.B.: évite les short tags <?=$title;?> préfère plutôt <?php echo $title;?>


Bein non, j'ai : un fichier .tpl.php (le modèle), un fichier .php (le controlleur) et un fichier .css (la vue) ...

J'ai bien séparé la mise en forme, le traitement des données et le design.
Haut
Messages: 8558

Enregistré le: 14 Mai 2003

Message le Ven Nov 27, 2009 15:46

Les fichiers .tpl.php, c'est un "view" pas un "model".
Les models c'est les accès à la base de donnée.
Haut

Formation recommandée sur ce thème :

Formation SEO spéciale Wordpress : apprenez à optimiser le référencement naturel d'un site fait avec Wordpress... Formation Ranking Metrics animée par un expert SEO / Wordpress.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.