Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Page PHP semi-dynamique

18 réponses
Avatar
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

10 réponses

1 2
Avatar
Kawai
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.


Avatar
Thibaut Allender
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

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

Avatar
Delf
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

Avatar
Delf
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

Avatar
Thibaut Allender

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


Avatar
P'tit Marcel
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

Avatar
Delf
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

Avatar
Marc
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


Avatar
Ralph Nader 2008
On 23 Nov 2004 10:51:03 GMT, Marc wrote:
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.

1 2