template_file_cache.php: wann wird (nicht) gecacht?
Verfasst: 17.01.2006 12:46
ich habe ein verständnis problem mit der template_file_cache.php aus dem phpbb contrib-verzeichnis.
irgendwie check ich aber absolut nicht, wann das gecachte template geladen wird und wann es neu generiert wird.
bis jetzt bin ich soweit: haben das gecachte und das originale template-file die gleiche modifikation-zeit, wird das gecachte template genommen. ansonsten wird es neu generiert. dann wird die modifikations-zeit für das gecachte template auf die zeit des orig. template-files gesetzt.
aber wann/wie werden die zeiten von beiden dateien unterschiedlich, damit das neu-generieren angestoßen werden kann??? da komm ich nicht weiter und auch die sufu hat mich leider nicht schlauer gemacht ...
irgendwie check ich aber absolut nicht, wann das gecachte template geladen wird und wann es neu generiert wird.
bis jetzt bin ich soweit: haben das gecachte und das originale template-file die gleiche modifikation-zeit, wird das gecachte template genommen. ansonsten wird es neu generiert. dann wird die modifikations-zeit für das gecachte template auf die zeit des orig. template-files gesetzt.
aber wann/wie werden die zeiten von beiden dateien unterschiedlich, damit das neu-generieren angestoßen werden kann??? da komm ich nicht weiter und auch die sufu hat mich leider nicht schlauer gemacht ...
Code: Alles auswählen
function pparse($handle)
{
global $phpEx;
$cache_file = $this->cachedir . $this->filename[$handle] . '.' . $phpEx;
if(@filemtime($cache_file) == @filemtime($this->files[$handle]))
{
$_str = '';
include($cache_file);
if ($_str != '')
{
echo $_str;
}
}
else
{
if (!$this->loadfile($handle))
{
die("Template->pparse(): Couldn't load template file for handle $handle");
}
// Actually compile the code now.
$this->compiled_code[$handle] = $this->compile($this->uncompiled_code[$handle]);
$fp = fopen($cache_file, 'w+');
fwrite ($fp, '<?php' . "\n" . $this->compiled_code[$handle] . "\n?" . '>');
fclose($fp);
touch($cache_file, filemtime($this->files[$handle]));
@chmod($cache_file, 0777);
eval($this->compiled_code[$handle]);
}
return true;
}