48 lines
1.0 KiB
PHP
48 lines
1.0 KiB
PHP
<?php
|
|
|
|
class Customcache
|
|
{
|
|
public static function store($key, $data, $ttl = 86400)
|
|
{
|
|
$filename = self::getFileName($key);
|
|
$content = gzdeflate(serialize([time() + $ttl, $data]));
|
|
file_put_contents($filename, $content);
|
|
}
|
|
|
|
public static function fetch($key)
|
|
{
|
|
$filename = self::getFileName($key);
|
|
|
|
if (!file_exists($filename) || !is_readable($filename)) {
|
|
return false;
|
|
}
|
|
|
|
$data = gzinflate(file_get_contents($filename));
|
|
$data = @unserialize($data);
|
|
|
|
if (!$data) {
|
|
unlink($filename);
|
|
return false;
|
|
}
|
|
|
|
if (time() > $data[0]) {
|
|
unlink($filename);
|
|
return false;
|
|
}
|
|
|
|
return $data[1];
|
|
}
|
|
|
|
private static function getFileName($key)
|
|
{
|
|
$md5 = md5($key);
|
|
$dir = _PS_CACHE_DIR_ . 'custom_cache/' . $md5[0] . '/' . $md5[1] . '/';
|
|
|
|
if (!is_dir($dir)) {
|
|
mkdir($dir, 0755, true);
|
|
}
|
|
|
|
return $dir . 'cache_' . $md5;
|
|
}
|
|
}
|