Ne bih da zvučim demorališuće (kako glupa reč :S), ali ako praviš tu klasu samo radi potreba nekog tvog projekta, onda je bolje da se oprobaš sa nekim gotovim rešenjima, kao što je npr.
APC. A ako to ipak nije slučaj, već jednostavno hoćeš da kreiraš neki svoj sistem keširanja, kojeg planiraš da objaviš, kao zaseban projekat, itd., onda pogledaj kako to radi npr. Zend Framework, odnosno, baci pogled na
File adapter njegove Zend_Cache_Backend komponente. Ne verujem da će ti išta značiti taj članak u manual-u, i zato je bolje da pogledaš kod te klase. Evo npr. ove su dve ključne metode:
Code:
protected function _fileGetContents($file)
{
$result = false;
if (!is_file($file)) {
return false;
}
$f = @fopen($file, 'rb');
if ($f) {
if ($this->_options['file_locking']) @flock($f, LOCK_SH);
$result = stream_get_contents($f);
if ($this->_options['file_locking']) @flock($f, LOCK_UN);
@fclose($f);
}
return $result;
}
Code:
protected function _filePutContents($file, $string)
{
$result = false;
$f = @fopen($file, 'ab+');
if ($f) {
if ($this->_options['file_locking']) @flock($f, LOCK_EX);
fseek($f, 0);
ftruncate($f, 0);
$tmp = @fwrite($f, $string);
if (!($tmp === FALSE)) {
$result = true;
}
@fclose($f);
}
@chmod($file, $this->_options['cache_file_umask']);
return $result;
}