Aller au contenu

Cron, page dynamique vers statique


Meeuuh

Sujets conseillés

Bonjour,

je rencontre un petit problème avec cron et php. J'ai une tâche cron qui me crée une page "statique" à partir d'une page "dynamique" vers 3h du matin, question de dimineur au maximum les connexion à la DB (seul la tâche s'y connecte pour recréer la page et non chaque visiteur).

Mon problème est avec $_GET. Mon script est totalement dynamique gràçe à $_GET, j'affiche des images en fonction des catégories, d'un groupe et aussi le nombre de pages. En gros mon index.php ressemble à ça: index.php?cat=x&gr=y&page=z.

Comment faire pour que toutes ces pages dynamiques deviennent statiques ? Donc pour chaque possibilité de mon index.php, une page doit être crée par cron.

Je demande trop ou c'est facile à coder?

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Hello,

tout dépend de la structure du code en fait. Si ton "index.php" appelle une jolie fonction qui fait tout le traitement ou presque, ça va être très simple à industrialiser ; dans le cas contraire ça risque de tourner au bricolage.

Au pire y aura toujours la boucle déclenchant les requêtes HTTP... mais... beurk :D

Dans tous les cas, sans savoir de quoi il retourne exactement difficile de répondre.

Lien vers le commentaire
Partager sur d’autres sites

Personnellement, je cumule mise en cache et réécriture d'urls.

En gros, voilà ce que je fais :

- Mes règles de réécriture pointent tous vers le même fichier, qui incluera différentes pages en fonction des paramètres qui lui sont passés

- Dans ce fichier, je récupère l'url telle qu'elle est envoyée au navigateur.

- Je vérifie l'existence d'un fichier de ce nom dans mon répertoire cache.

- Si le fichier n'existe pas, ou s'il est trop vieux, je le (re)crée

- J'affiche le contenu du fichier

L'avantage, c'est que je n'ai pas besoin de faire un cronjob pour générer ces pages : le premier utilisateur à la demander la génèrera, et les autres bénéficieront de la version cachée.

Lien vers le commentaire
Partager sur d’autres sites

Pas mâl la mise en cache mais dans le cas ou quelqu'un tape n'importe quoi, genre "bcisdgdgf" qu'est-ce qui empêche le script de créer des pages inutiles?

Voici mon code, c'est certainement pas le plus beau donc si vous avez des suggestions ... je vous en remercie d'avance :)

<?php
if(!isset($_GET['page'])){
$page = 1;
} else {
$page = $_GET['page'];
}

if(!isset($_GET['g'])){
$groupid = 1;
} else {
$groupid = $_GET['g'];
}

if(!isset($_GET['c'])){
$categoryid = '1';
} else {
$categoryid = $_GET['c'];
}
?>
<?php
$max_results = 40;

$from = (($page * $max_results) - $max_results);

$select = mysql_query("SELECT * FROM st_galleries WHERE category = '$categoryid' AND groupid = '$groupid' ORDER BY id DESC LIMIT $from, $max_results");
$resultcount = mysql_num_rows($select);
$inputstringunres = "SELECT * FROM st_galleries WHERE category = '$categoryid' AND groupid = '$groupid'";
$selectunres = mysql_query($inputstringunres);
$resultcountunres = mysql_num_rows($selectunres);
$total_results = $resultcountunres;
$total_pages = ceil($total_results / $max_results);
$a=0;

echo "";
while ($a < $resultcount){

$url = mysql_result($select,$a,"url");
$width = mysql_result($select,$a,"width");
$height = mysql_result($select,$a,"height");
$thumbs = mysql_result($select,$a,"thumbs");
$category = mysql_result($select,$a,"category");
$thumb_dir = mysql_result($select,$a,"subdir");
$thumb_id = mysql_result($select,$a,"crc");
$thumb_type = mysql_result($select,$a,"ext");
$description = mysql_result($select,$a,"text_description");
$id = mysql_result($select,$a,"ID");
?>

<div class="photos"><a href="<?echo $url;?>" title="<?echo $description;?>"><img src="st/thumbs/<?echo $thumb_dir;?>/<?echo $thumb_id;?>.<?echo $thumb_type;?>" width="<?echo $width;?>" height="<?echo $height;?>" alt="<?echo $description;?>" /></a><div class="info"><?echo $thumbs;?> images</div></div>

<?php
++$a;
}

if($page > 1){
$prev = ($page - 1);
echo "<a href=\"st_cat.php?c=$categoryid&g=$groupid&page=$prev\">< Previous</a> ";
}

for($i = 1; $i <= $total_pages; $i++){
if(($page) == $i){
echo "Page $i ";
} else {
echo "<a href=\"st_cat.php?c=$categoryid&g=$groupid&page=$i\"> $i</a> ";
}
}

if($page < $total_pages){
$next = ($page + 1);
echo "<a href=\"st_cat.php?c=$categoryid&g=$groupid&page=$next\">Next ></a>";
}
?>

Modifié par Meeuuh
Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...