Framework foton
Инструмент для профессиональной разработки web приложений
            На Framework Foton используется 3 типа кеширования:
            1. Redis
            2. Memcached
            3. Файловый кеш
               
               Работа с Redis
               
Для работы с Redis необходимо установить библиотеку Redis и подключаете как в примере:

<?
    public function news(){
        $arr = 
        [
            'news',
            'sort'=>array('id'=>'DESC'),
            'where'=>array('=pub'=>'on')
        ];
        return $this->core->getlist($arr);	
    }

Например нам нужно закешировать результат метода ядра getlist, тогда меняем код метода вот так:

<?
use Foton\Lib\RCache;

class test{
	public function news(){
		$arr_cache = array('127.0.0.1','11211'); //хост, порт
		$obj = new RCache($arr_cache);
		$arr = array(
 			'news',
 			'sort'=>array('id'=>'DESC'),
 			'where'=>array('=pub'=>'on')
 		);
 		return $obj->Core->getlist($arr); 
 	}
}

             
Работа с Memcached
               
Для работы с Memcached необходимо установить библиотеку Memcache и подключаете как в примере:

<?
    public function news(){
        $arr = 
        [
            'news',
            'sort'=>array('id'=>'DESC'),
            'where'=>array('=pub'=>'on')
        ]
        return $this->core->getlist($arr);	
    }

Например нам нужно закешировать результат метода ядра getlist, тогда меняем код метода вот так:

<?
use Foton\Lib\MCache;

class test{
	public function news(){
		$arr_cache = array('127.0.0.1','11211',50); //хост, порт, время кеширования в секундах
		$obj = new MCache($arr_cache);
		$arr = array(
 			'news',
 			'sort'=>array('id'=>'DESC'),
 			'where'=>array('=pub'=>'on')
 		);
 		return $obj->Core->getlist($arr); 
 	}
}


Работа с файловым кешем

Для работы с файловым кешем ничего устанавливать не нужно, просто подключаете его как в примере:

<?
    public function news(){
        $arr = 
            [
                'news',
                'sort'=>array('id'=>'DESC'),
                'where'=>array('=pub'=>'on')
            ];
            return $this->core->getlist($arr);	
    }

Например нам нужно закешировать результат метода ядра getlist, тогда меняем код метода вот так:


<?
use Foton\Lib\Cache;

class test{
	public function news(){
		$timeCache = 50; //время  кеширования в секундах
		$obj = new Cache($timeCache);
		$arr = array(
 			'news',
 			'sort'=>array('id'=>'DESC'),
 			'where'=>array('=pub'=>'on')
 		);
 		return $obj->Core->getlist($arr); 
 	}
}

Для очистки всего файлового кеша добавьте в код $obj->clearCache(); - данный метод полностью очистит директорию кеша /system/cache/

<?
public function clearCache(){
	$timeCache = 50; //хост, порт
	$obj = new Cache($timeCache);
	$objclearCache();
}

Для очистки конкретного файла кеша добавьте в код $obj->delCache($file); - где $file – название файла, данный метод удалит файл кеша /system/cache/$file.php

<?
public function clearCache(){
	$timeCache = 50; //хост, порт
	$obj = new Cache($timeCache);
	$file = 'myfile';
	$obj->delCache($file);
}

Упрощенное использование текучего интерфейса от объекта кеширования подъодит для небольших namespaces, если же вам нужно закешировать не метод ядра, а допустим метод модуля ядра Foton\Module\Operation\Site вам придется обращаться к свойству Foton_Module_Operation_Site что достаточно громоздко, в этих случаях удобнее использовать стандартный подход:

Создаем обьект кеширования в глобальном контроллере сайта

public function cache(){
    $timeCache = 50; //время  кеширования в секундах
    return new Cache($timeCache);
}

Подключаем из глобального контроллера и делаем проверку на существование кеша

<?
namespace Controller\Site;
use \Foton\Module\Operation\Site;
class html extends \Model\Site\html
{
    public $glob;
    public function news(){
        $cache = $this->glob['cache'];
        $arr = $cache->getCache('news_cache');
        if($arr!=false){
            return $arr;
        }
        else{
            $arr = $this->core->getlist(['news','count'=>3,'sort'=>['id'=>'DESC']]);
            $cache->setCache('news_cache',$arr);
            return $arr;
        }
    }
}

© Copyright 2026 Разработано на Framework Foton
Продукт зарегистрирован в Роспатенте