Вход Регистрация
Файл: framework/core/manifest/ManifestCache.php
Строк: 88
<?php

/**
 * A basic caching interface that manifests use to store data.
 *
 * @package framework
 * @subpackage manifest
 */
interface ManifestCache {
    public function 
__construct($name);
    public function 
load($key);
    public function 
save($data$key);
    public function 
clear();
}

/**
 * Stores manifest data in files in TEMP_DIR dir on filesystem
 *
 * @package framework
 * @subpackage manifest
 */
class ManifestCache_File implements ManifestCache {
    function 
__construct($name) {
        
$this->folder TEMP_FOLDER.'/'.$name;
        if (!
is_dir($this->folder)) mkdir($this->folder);
    }

    function 
load($key) {
        
$file $this->folder.'/cache_'.$key;
        return 
file_exists($file) ? unserialize(file_get_contents($file)) : null;
    }

    function 
save($data$key) {
        
$file $this->folder.'/cache_'.$key;
        
file_put_contents($fileserialize($data));
    }

    function 
clear() {
        
array_map('unlink'glob($this->folder.'/cache_*'));
    }
}

/**
 * Same as ManifestCache_File, but stores the data as valid PHP which gets included to load
 * This is a bit faster if you have an opcode cache installed, but slower otherwise
 *
 * @package framework
 * @subpackage manifest
 */
class ManifestCache_File_PHP extends ManifestCache_File {
    function 
load($key) {
        global 
$loaded_manifest;
        
$loaded_manifest null;

        
$file $this->folder.'/cache_'.$key;
        if (
file_exists($file)) include $file;

        return 
$loaded_manifest;
    }

    function 
save($data$key) {
        
$file $this->folder.'/cache_'.$key;
        
file_put_contents($file'<?php $loaded_manifest = '.var_export($datatrue).';');
    }
}

/**
 * Stores manifest data in APC.
 * Note: benchmarks seem to indicate this is not particularly faster than _File
 *
 * @package framework
 * @subpackage manifest
 */
class ManifestCache_APC implements ManifestCache {
    protected 
$pre;

    function 
__construct($name) {
        
$this->pre $name;
    }

    function 
load($key) {
        return 
apc_fetch($this->pre.$key);
    }

    function 
save($data$key) {
        
apc_store($this->pre.$key$data);
    }

    function 
clear() {
    }
}
Онлайн: 0
Реклама