Merge pull request #59 from galex-713/patch-9

Ajout d’un cache
This commit is contained in:
mitsukarenai 2014-02-12 10:23:51 +01:00
commit b2efb12390
3 changed files with 112 additions and 59 deletions

View file

@ -13,6 +13,9 @@
// define( 'HEAD_TITLE', '');
// define( 'FOOTER', 'D\'après les premières versions de <a href="http://sebsauvage.net">SebSauvage</a> et <a href="http://bohwaz.net/">Bohwaz</a>.');
// define( 'DOCS_CACHE_DURATION', 1800);
// define( 'AUTOBLOGS_CACHE_DURATION', 1800);
// define( 'ALLOW_FULL_UPDATE', TRUE );
// define( 'ALLOW_CHECK_UPDATE', TRUE );

View file

@ -16,6 +16,9 @@ if (!defined('FOLDER_MAX_LENGTH')) define('FOLDER_MAX_LENGTH', 80);
date_default_timezone_set('Europe/Paris');
setlocale(LC_TIME, 'fr_FR.UTF-8', 'fr_FR', 'fr');
if( !defined('DOCS_CACHE_DURATION')) define( 'DOCS_CACHE_DURATION', 1800 );
if( !defined('AUTOBLOGS_CACHE_DURATION')) define( 'AUTOBLOGS_CACHE_DURATION', 1800 );
if( !defined('ALLOW_FULL_UPDATE')) define( 'ALLOW_FULL_UPDATE', TRUE );
if( !defined('ALLOW_CHECK_UPDATE')) define( 'ALLOW_CHECK_UPDATE', TRUE );

View file

@ -261,8 +261,8 @@ if (isset($_GET['export'])) {
foreach($subdirs as $unit) {
if(is_dir($unit)) {
$unit=substr($unit, 2);
$ini = parse_ini_file($unit.'/vvb.ini');
$unit=substr($unit, 2);
$config = new stdClass;
foreach ($ini as $key=>$value) {
@ -832,7 +832,7 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
<input type="submit" value="Créer" />
</form>
</section>
<?php }
<?php }
if(ALLOW_NEW_AUTOBLOGS_BY_OPML_FILE == TRUE) { ?>
<section class="form" id="add_opmlfile">
<header>
@ -847,7 +847,7 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
<input type='submit' value='Importer' />
</form>
</section>
<?php }
<?php }
if(ALLOW_NEW_AUTOBLOGS_BY_OPML_LINK == TRUE) { ?>
<section class="form" id="add_opmllink">
<header>
@ -862,7 +862,7 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
<input type="submit" value="Envoyer" />
</form>
</section>
<?php }
<?php }
if(ALLOW_NEW_AUTOBLOGS_BY_BUTTON == TRUE) { ?>
<section class="form" id="add_bookmark">
<header>
@ -878,8 +878,14 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
</section>
<?php } ?>
</section>
<?php } ?>
<?php
<?php }
$fichierCache = 'docs.cache';
// si la page n'existe pas dans le cache ou si elle a expiré (durée paramétrable)
// on lance la génération de la page et on la stoke dans un fichier
if (@filemtime($fichierCache)<time()-(DOCS_CACHE_DURATION)) {
// on démarre la bufferisation : rien n'est envoyé au navigateur
ob_start();
$directory = DOC_FOLDER;
$docs = array();
if( is_dir($directory) && !file_exists($directory . '.disabled') ) {
@ -891,14 +897,14 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
$docs[] = array('<a href="'. preg_replace('~ ~', '%20', $unit) . '">'. substr($unit, (strrpos($unit, '/')) + 1 ) .'</a>', $size);
}
}
}
if(!empty( $docs )) {
echo '<section id="docs">
echo ' <section id="docs">
<header>
<h2>Autres documents</h2>
</header>
<ul>'."\n";
foreach( $docs as $value ) {
$str = $value[0];
if ( !empty($value[1]) ) {
@ -906,9 +912,25 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
}
echo ' <li>'. $str . "</li>\n";
}
echo ' </ul>
</section>'."\n";
}
}
// on recuperre le contenu du buffer
$contenuCache = ob_get_contents();
ob_end_flush(); // on termine la bufferisation
$fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
if ($fd) {
fwrite($fd,$contenuCache); // on écrit le contenu du buffer dans le fichier cache
fclose($fd);
}
// sinon le fichier cache existe déjà, on ne génère pas la page
// et on envoie le fichier statique à la place
} else {
readfile($fichierCache); // affichage du contenu du fichier
echo ' <!-- Section « documents » (présente uniquement si non vide) servie par le cache -->'."\n"; // et un petit message
}
?>
<section id="autoblogs">
<header>
@ -921,8 +943,16 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
<a href="?exportopml">export<sup>OPML</sup></a>
</nav>
<ul>
<?php
$fichierCache = 'autoblogs.cache';
// si la page n'existe pas dans le cache ou si elle a expiré (durée paramétrable)
// on lance la génération de la page et on la stoke dans un fichier
if (@filemtime($fichierCache)<time()-(AUTOBLOGS_CACHE_DURATION)) {
// on démarre la bufferisation : rien n'est envoyé au navigateur
ob_start();
echo '<ul>
';
$subdirs = glob(AUTOBLOGS_FOLDER . "*");
$autoblogs = array();
foreach($subdirs as $unit) {
@ -932,7 +962,6 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
$ini = parse_ini_file(ROOT_DIR . '/' . $unit . '/vvb.ini');
if($ini) {
$config = new stdClass;
$unit=substr($unit, 2);
foreach ($ini as $key=>$value) {
$key = strtolower($key);
$config->$key = $value;
@ -964,9 +993,27 @@ if( !empty($_POST['opml_file']) && ALLOW_NEW_AUTOBLOGS && ALLOW_NEW_AUTOBLOGS_BY
}
}
echo $autoblogs_display;
?>
echo '
</ul>
<?php echo "<p>".count($autoblogs)." autoblogs hébergés</p>"; ?>
<p>'.count($autoblogs).' autoblogs hébergés</p>';
// on recuperre le contenu du buffer
$contenuCache = ob_get_contents();
ob_end_flush(); // on termine la bufferisation
$fd = fopen("$fichierCache", "w"); // on ouvre le fichier cache
if ($fd) {
fwrite($fd,$contenuCache); // on écrit le contenu du buffer dans le fichier cache
fclose($fd);
}
// sinon le fichier cache existe déjà, on ne génère pas la page
// et on envoie le fichier statique à la place
} else {
echo '<!-- Début du cache -->'."\n".' '; // un message de début
readfile($fichierCache); // affichage du contenu du fichier
echo "\n".' <!-- Fin du cache -->'."\n"; // et un petit message
}
?>
</section>
<footer>