[script] Mise en cache des pages PHP

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: 11 Juil 2005

Message le Ven Juil 15, 2005 13:28

c'est bon j'ai compris !

si on utilise ob_end_clean() on efface le buffer ! mais on ne reprend pas le contenu pour l'afficher ! nous l'avons repris pour le mettre dans une variable mais pas dans l'affichage ilico ! bien compris ! merci encore et désolé !

Par contre pour gérer des passages de variable (?test=rien) quel procéder employez-vous ?

EDIT:

si l'on pratique l'url rewriting, est ce que le paramètre REQUEST_URI se base sur l'url réécrite ou sur celle entrée par l'utilisateur ? (dans le deuxième cas cela facilite la tâche) ?


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Ven Juil 15, 2005 13:44

thierry8 a écrit:si l'on pratique l'url rewriting, est ce que le paramètre REQUEST_URI se base sur l'url réécrite ou sur celle entrée par l'utilisateur ?


REQUEST_URI contient l'url rewrité.

Si pas de rewriting, il faut convertir l'url avec les parametres en nom de fichier unique.

thierry8
WRInaute accro
WRInaute accro
 
Messages: 3251
Inscription: 11 Juil 2005

Message le Ven Juil 15, 2005 13:47

ok ! donc ca simplifie tout si l'on emploie l'url rewrité !!!
(enfin si j'ai bien compris:
url de l'utilisateur:
www.site.fr/page-8.html

url réécrite:
www.site.fr/?page=8

mais le REQUEST_URI se base sur www.site.fr/page-8.html ?
bien compris ? aïe

impecable ce script !!!

encore bravo !
je crois que ça y est ! j'ai fini de vous embettez !!!!

merci mille fois..........!!!!!!!!!!!


anamorph
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 38
Inscription: 17 Déc 2004

Message le Sam Aoû 06, 2005 8:51

Salut à tous,

Je n'arrive pas encore à faire fonctionner ce fameux script comme je voudrais. En fait j'ai un bout de code tout simple qui s'occupe de charger/renvoyer un flux passé en paramètre grâce à la méthode readfile), je me sert de ce script pour charger des fichiers xml se trouvant sur un domaine différent (la méthode javascript xmlHttpRequest ne supportant pas des appels sur des domaines différents)
Les fichiers sont bien crée en cache mais l'appel au php me revoit :
Code: Tout sélectionner
Parse error: parse error, unexpected T_STRING in

Je me demande s'il n'y a en fait pas une histoire que codage de caractères .. Mon code:

Code: Tout sélectionner
<?PHP
$urldemandee=$_SERVER['REQUEST_URI']; //on lit l'adresse de la page
$urldemandee=ereg_replace('/','-',$urldemandee); // on tranforme l'adresse en nom de fichier
if($urldemandee=="-") $urldemandee="-index.html"; // si l'adresse est la racine du site, on ajoute index.html
$fichierCache="cache/cache".$urldemandee; // on construit le chemin du fichier cache de la page
if (@filemtime($fichierCache)<time()-(3600*24*360)) { //si la page n'existe pas dans le cache ou si elle a expiré
   ob_start(); // on démarre la bufferisation de la page: rien de ce qui suit n'est envoyé au navigateur
?>
<?php
header("Content-Type: text/xml");
$flux = $_GET['url'];
// make sure that some page is really being called
if ($flux && $flux != ""){
   // make sure that an http call is being made - otherwise there's access to any file on machine...
   if ((strpos($flux, "http://") === 0) || (strpos($flux, "https://") === 0)){
      readfile($flux);
   }
}
?>
<?php
   $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);
     }
} else { // le fichier cache existe déjà
  include ($fichierCache); // on le copie ici
}
?>


Merci de votre aide.
Florent


anamorph
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 38
Inscription: 17 Déc 2004

Message le Sam Aoû 06, 2005 9:43

je viens de résoudre mon problème :

pour renvoyer le fichier j'utilise
readfile($fichierCache) au lien de include ($fichierCache)

en fait ce qui posait problème c'est la partie supérieur du xml : <?xml version="1.0" encoding="ISO-8859-1"?>

qui devait être interprété comme du php.


NoName
WRInaute discret
WRInaute discret
 
Messages: 71
Inscription: 4 Nov 2004

Message le Jeu Aoû 25, 2005 23:51

Hello ;)

Pour ma part, j'attendait que jmCache soit compatible php5, mais apparement ils ne sont pas préssés :(

J'essaye donc ce system, j'ai modifié le script de maniere a appeler une fonction pour les pages devant êtres mises en cache.

Code effacé

L'appel se fait de cette maniere :

------------------ debut page ------------------
require('my_file.php5');
le contenu de ma page
caching();
------------------ fin page ------------------

Pb, l'écriture du fichier ne fonctionne pas, et le $flag est bien = 5

Une idée ?
Dernière édition par NoName le Ven Aoû 26, 2005 19:38, édité 1 fois.


Patrice A.
WRInaute passionné
WRInaute passionné
 
Messages: 2415
Inscription: 11 Fév 2005

Message le Ven Aoû 26, 2005 8:34

Bonjour,
NoName, les variables globales dans une fonction c'est vraiment pas terrible, sers-toi plutôt d'un paramètre. Pour chercher le bug fais comme tout programmeur : mets des echo() pas à pas avec les valeurs des variables utilisées.


Ohax
WRInaute accro
WRInaute accro
 
Messages: 6406
Inscription: 5 Juil 2004

Message le Sam Sep 24, 2005 17:27

comment faire pour ne pas mettre en cache une partie précise de la page ?

charlynancy
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 10 Mai 2005

Peux t - on se passer de la la base de données?

Message le Ven Sep 30, 2005 18:57

Théoriquement le système de mise cache permet donc de travailler avec la base de données inactive.
Si ce que je viens de dire n'est pas une infame connerie, la mise en cache présente un énorme intérêt m^me sur un serveur mutualisé.
En effet, sur un serveur mutualisé, lorsqu'un barbare cohabite et met la base OUT, avec un script à la morre moi le noeud, ça permet d'avoir son site toujours actif.
Pouvez vous me confirmer que ça permet bien de faire tourner le site sans base de donnée (une fois les pages mises en cache bien sur)???

charlynancy
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 11
Inscription: 10 Mai 2005

coment exclure certaine page du système de mise en cache

Message le Sam Oct 01, 2005 12:28

Vos explications sont tellement bien faites que je ne suis plus foutu de réfléchir moi même.
Voila mon probème j'ai dans mes pages un formulaires de recherche qui renvoie vers une page résultat qui bien sur n'est jamais la même.
Bref comment mettre un test avant le script de mise en cache pour qu'on affiche directement cette page sans passer par le cache.

dcz
WRInaute impliqué
WRInaute impliqué
 
Messages: 723
Inscription: 2 Mar 2005

Message le Mer Oct 26, 2005 11:20

et voilà du code qui va changer la donne concernant phpbb :

http://www.webrankinfo.com/forums/viewtopic_38997.htm

on pourra plus dire qu'il est trop lent comme ça ;)

++


SuperPJ
WRInaute impliqué
WRInaute impliqué
 
Messages: 513
Inscription: 15 Jan 2005

Message le Mar Nov 01, 2005 4:53

Le script de Fandecine est tout simplement énooooooooorme ! J'ai rarement vu un code aussi important qui soit aussi facile à intégrer. Bravo ;)

Jusqu'à présent pour la mise en cache je concaténais la variable $html qui contient le code à afficher avant de décider à la fin de faire un "echo" ou un fwrite puis un "echo", mais il est clair que la fonction ob_start() est beaucoup plus pratique ! Elle a été créée sur mesure pour la mise en cache :D


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Mar Nov 01, 2005 11:17

Ohax a écrit:comment faire pour ne pas mettre en cache une partie précise de la page ?


En fait tu met le code de début du cache là ou tu veux que démarre la mise en cache, et le code de fin, là où tu veux que cela se termine.

Si ton site utilise des DIV absolus, tu peut même supperposer sur la partie en cache des choses qui ne le sont pas (j'utilise cette technique pour mes banières de pub, ce qui m'evite d'effacer le cache quand je veux changer un tag).

En ce qui concerne le MOD pour PHPBB, il utilise une autre technique qui consiste à mettre en cache les requetes MYQL.


Ohax
WRInaute accro
WRInaute accro
 
Messages: 6406
Inscription: 5 Juil 2004

Message le Dim Nov 20, 2005 18:04

Bonsoir,

j'aimerai adapter ce script pour mettre en cache "mes archives" phpbb qui sont uniquemment consultées


comment je peu faire ?


fandecine
Modérateur
Modérateur
 
Messages: 2047
Inscription: 2 Avr 2005

Message le Dim Nov 20, 2005 19:34

j'ai commencé à écrire une solution de mise en cache pour PHPBB que je teste actuellement. Il me reste quelques mises au point à faire (c'est assez long car j'ai peu de tempsc à y consacrer et le code PHPBB ne m'est pas famillier)

je publierais tout cela lorsque ce sera terminé et fiabilisé.

[script] Mise en cache des pages PHP [script] Mise en cache des pages PHP

Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités