Page PHP semi-dynamique
Le
Delf

Bonjour.
J'ai un site en PHP et une certaine page nécessite pas mal de requêtes
SQL. Dès qu'on affiche la page, les requêtes sont donc lancées afin de
créer la page.
J'aimerais savoir s'il existait un mécanisme du genre: la page PHP est
générée toutes les X mins (ou un système de cache ?). Puis entre temps,
elle est static afin d'éviter des accès à MySQL dès que la page est
demandée.
Au pire, je passe par un script Perl + Cron mais côté maintenance, ca ne
va pas être la joix
Merci d'avance.
--
Delf
J'ai un site en PHP et une certaine page nécessite pas mal de requêtes
SQL. Dès qu'on affiche la page, les requêtes sont donc lancées afin de
créer la page.
J'aimerais savoir s'il existait un mécanisme du genre: la page PHP est
générée toutes les X mins (ou un système de cache ?). Puis entre temps,
elle est static afin d'éviter des accès à MySQL dès que la page est
demandée.
Au pire, je passe par un script Perl + Cron mais côté maintenance, ca ne
va pas être la joix
Merci d'avance.
--
Delf
C'est effectivement un système de cache qu'il faut.
pourquoi générer toutes les X minutes ?
il serait plus sein de générer une page HTML à chaque fois que les
données sont modifiées. Comme ça la page appelée n'est plus un .php mais
un .html et il n'y a plus de requetes superflues.
C'est une methode tres efficace sauf si les données changent toutes les
4 secondes ;)
Kawai ^_^
le cache est une bonne idee
ca peut etre déclenché par le premier visiteur qui voit la page au moins
où elle a besoin d'être mise à jour
au lieu de délivrer la page directement au client, il faut rediriger la
sortie vers une fichier, puis délivrer ce fichier au client
ensuite, reste à trouver une méthode pour déterminer si on doit générer
la page, ou utiliser la version mise en cache
--
thibaut allender | freelance | http://capsule.org
Vais voir si je trouve qq chose sur le Net. Merci.
Ca revient au meme qu'un script Perl... vu qu'il me faudra un timer. Ce
qui me gene, c'est de générer toute la page... ou alors je mets des
balises de comments dans la page php servant de modèle et le script
écrit entre...
--
Delf
Je ne sais pas quand les données changent...
--
Delf
tester à quelle date a été généré le fichier, si plus ancien que X
heures, on regenere)
tu peux aussi generer des portions et faire un include
if (test) {
// script qui genere l'include;
}
include(include_généré);
--
thibaut allender | freelance | http://capsule.org
En dehors des outils de cache, tu peux programmer toi-même la bascule
statique/dynamique, par exemple :
$fichier_php = $_SERVER['SCRIPT_FILENAME'];
$fichier_html = preg_replace('`.php.?$`', '.html', $fichier_php);
$cache = ($fichier_html <> $fichier_php);
if ($cache) {
if(file_exists($fichier_html)
and (time() - filemtime($fichier_html) < 4*60)) {
# affichage de la page cache
readfile($fichier_html);
exit;
}
ob_start('sauve_html');
}
...
if($cache) ob_end_flush();
function sauve_html($buffer) {
global $fichier_html;
if($f = fopen($fichier_html, 'wb')) {
fwrite($f, $buffer);
fclose($f);
}
return $buffer;
}
non testé.
eça
--
P'tit Marcel
En utilisant le terme 'timer', je voulais dire un système se basant sur
une durée de temps.
C'est vrai. Je l'utilise assez fréquemment en plus et je n'y ai pas
songé. Merci.
--
Delf
Les données changent quand ce ne sont plus les mêmes qu'avant ;-)
Tu as certainement moyen de détecter les delete, update, insert lancés
par tes scripts et susceptibles d'entrainer une modification des
donnees. Dans ce cas là, à chaque fois, tu regénères ta page statique.
Pour être plus clair, à chaque fois qu'une requête de modification est
lancé, tu inclus juste après un script chargé de la regénération de la
page html
--
Marc
Un truc simple pour ça, c'est d'ajouter une colonne version qui sera
incrémentée à chaque modification d'une table et permet ainsi
facilement de déterminer si les données ont bougé depuis la dernière
génération de la page.
Ralph.