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
  • Partager ce contenu :
Vos réponses Page 1 / 2
Trier par : date / pertinence
loufoque
Le #694851
Delf a dit le 22/11/2004 11:54:

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 ?).


C'est effectivement un système de cache qu'il faut.

Kawai
Le #695052
Salut,
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 ^_^


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.


Thibaut Allender
Le #695053
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.


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

Delf
Le #694847
Thibaut Allender wrote:

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


Vais voir si je trouve qq chose sur le Net. Merci.

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


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

Delf
Le #694848
Kawai wrote:

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 ;)


Je ne sais pas quand les données changent...

--
Delf

Thibaut Allender
Le #694846

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


Ca revient au meme qu'un script Perl... vu qu'il me faudra un timer.

non, pourquoi un timer ? on peut faire d'autres tests (par exemple

tester à quelle date a été généré le fichier, si plus ancien que X
heures, on regenere)

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...


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


P'tit Marcel
Le #694845
Delf wrote:
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.


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

Delf
Le #694842
Thibaut Allender wrote:

non, pourquoi un timer ? on peut faire d'autres tests (par exemple
tester à quelle date a été généré le fichier, si plus ancien que X
heures, on regenere)


En utilisant le terme 'timer', je voulais dire un système se basant sur
une durée de temps.

tu peux aussi generer des portions et faire un include

if (test) {
// script qui genere l'include;
}
include(include_généré);


C'est vrai. Je l'utilise assez fréquemment en plus et je n'y ai pas
songé. Merci.

--
Delf

Marc
Le #694620
Kawai wrote:

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 ;)



Je ne sais pas quand les données changent...



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


Ralph Nader 2008
Le #694615
On 23 Nov 2004 10:51:03 GMT, Marc
Tu as certainement moyen de détecter les delete, update, insert lancés
par tes scripts et susceptibles d'entrainer une modification des
donnees.


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.

Poster une réponse
Anonyme