2012-06-16 2 views
0

Как в opencart я бы только писал/получал кеш, если домен не является localhost?Ключ Opencart только если домен не localhost

Класс, ответственный за кеширование;

class Cache { 
    private $expire = 3600; 

    public function __construct() { 
     $files = glob(DIR_CACHE . 'cache.*'); 

     if ($files) { 
      foreach ($files as $file) { 
       $time = substr(strrchr($file, '.'), 1); 

       if ($time < time()) { 
        if (file_exists($file)) { 
         unlink($file); 
        } 
       } 
      } 
     } 
    } 

    public function get($key) { 
     $files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*'); 

     if ($files) { 
      $cache = file_get_contents($files[0]); 

      return unserialize($cache); 
     } 
    } 

    public function set($key, $value) { 
     $this->delete($key); 

     $file = DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.' . (time() + $this->expire); 

     $handle = fopen($file, 'w'); 

     fwrite($handle, serialize($value)); 

     fclose($handle); 
    } 

    public function delete($key) { 
     $files = glob(DIR_CACHE . 'cache.' . preg_replace('/[^A-Z0-9\._-]/i', '', $key) . '.*'); 

     if ($files) { 
      foreach ($files as $file) { 
       if (file_exists($file)) { 
        unlink($file); 
       } 
      } 
     } 
    } 
} 

ответ

1

Просто быстрый патч ...

в функции ПОЛУЧИТЬ

public function get($key) { 
    if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {return;} 

в вашей функции множества

public function set($key, $value) { 
    if ($_SERVER['REMOTE_ADDR'] == '127.0.0.1') {return; } 

Но помните, что когда ваш о t о пропатчить ядро ​​OpenCart вы можете использовать VQmod

0

Измените метод get:

if ($files && $_SERVER['HTTP_HOST'] !== 'localhost') { 

Вы можете использовать ту же логику в set тоже, чтобы сохранить запись на диск.

Смежные вопросы