myaac/system/libs/cache_file.php
2017-05-01 20:05:36 +02:00

63 lines
1.2 KiB
PHP

<?php
/**
* File cache class
*
* @package MyAAC
* @author Slawkens <slawkens@gmail.com>
* @copyright 2017 MyAAC
* @version 0.0.1
* @link http://my-aac.org
*/
defined('MYAAC') or die('Direct access not allowed!');
class Cache_File
{
private $prefix = '';
private $dir = '';
private $enabled;
public function __construct($prefix = '', $dir = '') {
$this->prefix = $prefix;
$this->dir = $dir;
$this->enabled = (file_exists($this->dir) && is_dir($this->dir) && is_writable($this->dir));
}
public function set($key, $var, $ttl = 0)
{
$file = $this->_name($key);
file_put_contents($file, $var);
if($ttl != 0)
touch($file, time() + $ttl);
else
touch($file, time() + 24 * 60 * 60);
}
public function get($key)
{
$tmp = '';
if($this->fetch($key, $tmp))
return $tmp;
return '';
}
public function fetch($key, &$var)
{
$file = $this->_name($key);
if(!file_exists($file) || filemtime($file) < time())
return false;
$var = file_get_contents($file);
return true;
}
public function enabled() {
return $this->enabled;
}
private function _name($key) {
return sprintf("%s/%s%s", $this->dir, $this->prefix, sha1($key));
}
}
?>