28-08-2010, 08:50 PM
Voilà ce que je suggère en PHP. Je n'ai pas codé en PHP depuis très longtemps donc j'ai fais au plus clair (mais je pense que c'est ce qu'il y a de mieux à faire de décomposer en plusieurs variables).
Pour info, voilà ce que je fais avec Ruby on Rails, histoire de montrer une fois de plus que les frameworks apportent beaucoup (même si vous ne pourrez pas faire aussi simple en PHP (à cause de la syntaxe), il y a moyen de bien simplifier quand même) :
Sephi-Chan
$cache_path = "./cache/top_100";
$cache_exists = file_exists($cache_path);
$few_minutes_ago = time() - 30 * 60;
$last_access_time = filemtime($cache_path);
$cache_is_expired = $last_access_time < $few_minutes_ago;
$html_to_display = '';
if($cache_exists == false || $cache_exists && $cache_is_expired){
ob_start();
/* Tu mets ici le code pour générer ton tableau. */
$html_to_display = ob_get_flush();
}
else {
$html_to_display = file_get_contents($cache_path);
}
echo $html_to_display;
Pour info, voilà ce que je fais avec Ruby on Rails, histoire de montrer une fois de plus que les frameworks apportent beaucoup (même si vous ne pourrez pas faire aussi simple en PHP (à cause de la syntaxe), il y a moyen de bien simplifier quand même) :
# Un bout de vue qui ne sera pas mis en cache.
<% cache('top_100', :expires_in => 30.minutes) do %>
# Génération du tableau qui sera mis en cache.
<% end %>
# Là non plus, ce n'est pas mis en cache !
Sephi-Chan