Scripts
Cache class
Stukje coding van ongeveer een halfjaar/3-kwart jaar geleden. Hiermee kan je data (uit bijvoorbeeld je database) wegschrijven naar een server-bestand, zodat je SQL-Server minder wordt belast. Ook is het gewoon mogelijk om hele webpagina's of alleen variabelen hierin te cachen. Lifetime instellen, en viola! Veel succes ermee!
index.php
<?php
require_once('Cache.class.php');
/**
* @author LorenzPHP
* @copyright 2010
*/
New Cache('cache'); // Map waar de data heen gaat..
/**
* Cache web-url
*/
$cache = file_get_contents('http://www.bulletstar.net/rss.php');
if (Cache::isCached($cache))
{
print Cache::Read($cache);
}
else
{
if (Cache::Write($cache, 5*60)) // Lifetime is 5 minuten.
{
print Cache::Read($cache);
}
}
/**
* Cache another data
*/
if (!Cache::isCached('test')) // Wanneer je zeker weet dat het bestand niet bestaat..
{
if (Cache::Write('test', 300))
{
print 'Succesvol opgeslagen.'; // Lifetime is 300 seconden (zelfde als 5 minuten)
}
}
?>
cache.class.php
<?php
error_reporting(E_ALL);
/**
* Cache data to a file on the server.
*
* @static
* @author Lorenzo de Kamps
* @since 14-05-2010
* @copyright 2010 - 2011, Lorenzo de Kamps
* @version 1.0 stable
*/
class Cache
{
public static $dir;
public static $file;
public static $lifetime;
public static $dir_file;
public function __construct($direct)
{
try
{
self::$dir = $direct;
if (!is_dir(self::$dir))
{
$create = mkdir(self::$dir, 0777);
if (!$create)
{
Throw new Exeption('Can\'t create cache-directory.');
}
}
}
catch (Exception $e)
{
self::ErrorHandler($e->getMessage());
}
}
public static function isCached($file)
{
$string = md5($file);
self::$dir_file = self::$dir.'/'.$string.'.txt';
$open = @fopen(self::$dir_file, 'r');
if ($open)
{
return true;
}
else
{
return false;
}
}
public static function Read($cache)
{
try
{
$string = md5($cache);
$open = fopen(self::$dir_file, 'r');
if ($open)
{
$theData = fread($open,1000000);
$un = unserialize($theData);
fclose($open);
if ($un['timestamp'] < time() - self::$lifetime)
{
unlink(self::$dir_file);
Cache::Write($cache);
}
return $un['data'];
}
else
{
throw New Exception('Can\'t open file.');
}
}
catch (Exception $e)
{
self::ErrorHandler($e->getMessage());
}
}
public static function Write($item, $lifetime = 300)
{
try
{
self::$lifetime = $lifetime;
$string = md5($item);
$create = fopen(self::$dir_file, 'w');
$file = $item;
if ($create)
{
if ($file)
{
$data = array(
'timestamp' => time(),
'data' => $file
);
fputs($create, serialize($data));
fclose($create);
return true;
}
else
{
throw new Exception('Can\'t read web-adres.');
}
}
else
{
throw new Exception('Can\'t create file.');
}
}
catch (Exception $e)
{
self::ErrorHandler($e->getMessage());
}
}
private static function ErrorHandler($error)
{
return print "<pre>".$error."</pre>";
}
}
?>
Reacties
0