public static function clear($name, $args = array()) { $name = 'Cache::clear::' . $name; $hash = Once::clear($name, $args); Mem::delete($hash); return $hash; }
<?php namespace infrajs\mem; use infrajs\mem\Mem; use infrajs\ans\Ans; use infrajs\config\Config; if (!is_file('vendor/autoload.php')) { chdir('../../../../'); require_once 'vendor/autoload.php'; } $ans = array(); $ans['title'] = 'Проверка доступности сервера'; $conf = Mem::$conf; if ($conf['type'] != 'mem') { $ans['class'] = "bg-warning"; return Ans::ret($ans, 'memcache не используется config.mem.mem'); } if (!class_exists('Memcache')) { return Ans::err($ans, 'Нет класса Memcache'); } $mem = Mem::memcache(); if (!$mem) { return Ans::err($ans, 'Сервер не доступен'); } Mem::set('test', true); $val = Mem::get('test'); if (!$val) { return Ans::err($ans, 'Неудалось восстановить значение. Требуется F5'); } return Ans::ret($ans, 'сервер доступен');
<?php use infrajs\access\Access; use infrajs\config\Config; use infrajs\ans\Ans; use infrajs\mem\Mem; use infrajs\path\Path; use infrajs\router\Router; if (!is_file('vendor/autoload.php')) { chdir('../../../'); require_once 'vendor/autoload.php'; Router::init(); } Access::test(true); Mem::flush(); Path::fullrmdir('!', true); $ans = array(); Ans::ret($ans, 'Cache cleared Mem::flush, Path::fulrmdir');
<?php namespace infrajs\mem; use infrajs\path\Path; Path::mkdir(Mem::$conf['cache']); $mem =& Mem::memcache(); if ($mem) { $mem->flush(); }
public static function cache($name, $fn, $args = array(), $re = false) { //Запускается один раз для админа, остальные разы возвращает кэш из памяти $name = 'Access::cache ' . $name; return Once::exec($name, function ($args, $name) use($name, $fn, $re) { $path = $name . '_' . Hash::make($args); $data = Mem::get($path); if (!$data) { $data = array('time' => 0); } $execute = self::adminIsTime($data['time'], function () { return true; }, $re); if ($execute) { $cache = !Nostore::check(function () use(&$data, $fn, $args, $re) { $data['result'] = call_user_func_array($fn, array_merge($args, array($re))); }); if ($cache) { $data['time'] = time(); Mem::set($path, $data); } else { Mem::delete($path); } } return $data['result']; }, array($args, $name), $re); }
if (!Load::isphp()) { header('Infrajs-Cache: false'); } if ($isjs) { $code = Collect::js($name); } else { $code = Collect::css($name); } if ($isjs) { $min = new Minify\JS($code); } else { $min = new Minify\CSS($code); } if ($isgzip) { $code = $min->gzip(); } else { $code = $min->minify(); } Mem::set($key, $code); } if (!Load::isphp()) { if ($isgzip) { header('Content-Encoding: gzip'); header('Vary: accept-encoding'); header('Content-Length: ' . strlen($code)); } } if ($isjs) { return Ans::js($code); } return Ans::css($code);
if ($dir) { if (!Path::$conf['fs']) { throw new \Exception('Filesystem protected by Path::$conf[fs]=false set it on true'); } foreach (glob($dir . '*.*') as $filename) { @unlink($filename); } } } } public static function &memcache() { return Once::exec('Mem::memcache', function () { $conf = Mem::$conf; if ($conf['type'] != 'mem') { return false; } if (!class_exists('Memcache')) { return false; } if (!$conf['memcache']) { return false; } $infra_mem = new \Memcache(); $infra_mem->connect($conf['memcache']['host'], $conf['memcache']['port']) or die('Could not connect'); return $infra_mem; }); } } Mem::$conf = array('type' => 'fs', 'memcache' => array('host' => 'localhost', 'port' => 23), 'cache' => Path::resolve('!mem/'));