<?php
$_cachetime = 3600;
$_cacheroot = '/path/to/cache/';
function cacheget($key) {
global $_cachetime, $_cacheroot;
$_cachename = sprintf('%x', crc32($key));
$_cachefolder = $_cacheroot.substr($_cachename,0,2).'/';
$_cachefile = $_cachefolder.$_cachename;
if (file_exists($_cachefile) && (filemtime($_cachefile) > time() - $_cachetime ||
(file_exists($_cachefile.'.lock') && time() - filemtime($_cachefile.'.lock') < 120))) {
return unserialize(file_get_contents($_cachefile));
}
return false;
}
function cachelock($key) {
global $_cacheroot;
$_cachename = sprintf("%x", crc32($key));
$_cachefolder = $_cacheroot.substr($_cachename,0,2).'/';
$_cachefile = $_cachefolder.$_cachename;
umask(0);
if (!file_exists($_cachefolder)) {
mkdir($_cachefolder,0777);
}
touch($_cachefile.'.lock');
}
function cacheset($key, $value) {
global $_cacheroot;
$_cachename = sprintf('%x', crc32($key));
$_cachefolder = $_cacheroot.substr($_cachename,0,2).'/';
$_cachefile = $_cachefolder.$_cachename;
umask(0);
if (!file_exists($_cachefolder)) {
mkdir($_cachefolder,0777);
}
if ($_h = fopen($_cachefile, 'w')) {
fwrite($_h, serialize($value));
fclose($_h);
unlink($_cachefile.'.lock');
}
}
?>