Flex
(aka Felix Jacobi)
So, da ich mich in letzter Zeit ein wenig mit Caching befasst habe, wollte ich mich nun dransetzen und meine erste eigene Caching Klasse erstellen...
Sie funktioniert, allerdings bin ich noch nicht ganz zufrieden...
Vielleicht hat ja der ein oder andere hier noch ein paar Verbesserungsvorschläge
Kritik ist also voll erwünscht.
Version 0.7
flexcache.class.php
example.php
So ganz zufrieden bin ich mit dem Aufruf noch nicht, aber spontan fiel mir da keine andere Lösung für ein, wegen der Verwendung der Output Buffering Funktionen.
Sie funktioniert, allerdings bin ich noch nicht ganz zufrieden...
Vielleicht hat ja der ein oder andere hier noch ein paar Verbesserungsvorschläge
Kritik ist also voll erwünscht.
Version 0.7
flexcache.class.php
PHP:
<?php
/**
* a simple Class for FileCaching
*/
class FlexCache {
protected $_cache_lifetime;
protected $_cache_file;
public function __construct($config = array(), $section)
{
$this->_cache_lifetime = $config['lifetime'];
$this->_cache_file = $config['path'].$section;
header("Expires: " . gmdate("D, d M Y H:i:s", time() + $this->_cache_lifetime) . " GMT");
header("Cache-Control: max-age=".$this->_cache_lifetime."\n");
ob_start();
if($this->checkCache() !== false) {
$this->getCache();
exit;
}
}
protected function _createCache()
{
@file_put_contents($this->_cache_file, ob_get_contents(), LOCK_EX);
}
public function getCache()
{
print(@file_get_contents($this->_cache_file));
}
public function checkCache()
{
if( @file_exists($this->_cache_dir.$this->_section) === true
&& @filemtime($this->_cache_file) >= (time() - $this->_cache_lifetime))
{
return true;
}
else
{
return false;
}
}
public function cache()
{
$this->_createCache();
ob_end_flush();
}
}
?>
example.php
PHP:
<?php
require_once("./flexcache.php");
$config['path'] = "./tmp/";
$config['lifetime'] = "10"; // 1h in seconds
$cache = new flexcache($config, "index");
$conn = mysqli_connect("localhost", "root", "", "test");
$sql = mysqli_query($conn, "SELECT id, title, `desc`, created FROM `benchmark`");
while($row = mysqli_fetch_assoc($sql)) {
echo date("d-m-Y", $row['created'])." - ".$row['title']."<br>";
echo $row['desc']."<br>";
}
$cache->cache();
?>
So ganz zufrieden bin ich mit dem Aufruf noch nicht, aber spontan fiel mir da keine andere Lösung für ein, wegen der Verwendung der Output Buffering Funktionen.
Zuletzt bearbeitet: