Meeuuh Posté 22 Janvier 2009 Posté 22 Janvier 2009 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.
Kioob Posté 23 Janvier 2009 Posté 23 Janvier 2009 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 Dans tous les cas, sans savoir de quoi il retourne exactement difficile de répondre.
captain_torche Posté 23 Janvier 2009 Posté 23 Janvier 2009 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.
Meeuuh Posté 23 Janvier 2009 Auteur Posté 23 Janvier 2009 (modifié) 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 <?phpif(!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é 23 Janvier 2009 par Meeuuh
captain_torche Posté 23 Janvier 2009 Posté 23 Janvier 2009 Ne t'inquiètes pas pour les 404, je les détecte aisément, et je ne les mets surtout pas en cache
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant