Seite 1 von 1

template_file_cache.php: wann wird (nicht) gecacht?

Verfasst: 17.01.2006 12:46
von DarkHappyAffe
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 ...

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;
	}