Zend Framework 2 oferuje kilka różnych adapterów pozwalających na cache poszczególnych elementów, które chcemy składować w pamięci podręcznej. Poniżej przedstawię sposób konfiguracji cache opartego na systemie plików.

Konfiguracja adaptera

W pierwszym kroku musimy ustawić konfigurację adaptera, co dokonuje się w pliku Module.php danego modułu.

public function getServiceConfig() {
  return array(
    'factories' => array(
      'cache' => function($sm) {
         $config = $sm->get('config');
         $cache = new Filesyste();
         $cache->getOptions()->setTtl($config['cache']['ttl']);
         $cache->getOptions()->setNamespace($config['cache']['namespace']);
         $cache->getOptions()->setCacheDir($config['cache']['dir']);
         $cache->getOptions()->setReadable($config['cache']['active']);
         $cache->getOptions()->setWritable($config['cache']['active']);

         $plugin = new ExceptionHandler();
         $plugin->getOptions()->setThrowExceptions(false);
         $cache->addPlugin($plugin);

         return $cache;
       },
    )
  );
} 

Jak widać na początku tworzymy obiekt typu Zend\Cache\Storage\Adapter\Filesystem, dla którego następnie ustawiamy czas przechowywania informacji, namespace, katalog w którym przechowywane będą dane. Ostatnie dwie metody: setReadable i setWritable pozwalają nam kontrolować dostęp do cache odpowiednio dla odczytu i zapisu. W powższym przykładzie za pomocą flagi konfiguracyjnej można włączyć bądź wyłączyć cache całkowicie.

Używanie

Poniższy kod pokazuje jak następnie korzystamy z cache w kontrolerze do pobierania informacji.

public function indexAction() {
  $cache = $this->getServiceLocator()->get('cache');

  $item = $cache->getItem( 'smartgroup-item', $success );
  if( !$success ) {
    //fetch item from database as $item
    $cache->setItem( 'smartgroup-item', $item ) );
  }
}

Na początku pobieramy instancje obiektu cache z ServiceLocator. Następie próbujemy z cache pobrać daną zapisaną pod nazwą “smartgroup-item”. Metoda getItem() posiada też drugi parametr, który jest callbackiem i określa, czy udało się znaleźć poszukiwaną daną czy nie. W przypadku sukcesu jest ona od razu dostępna jako zmienna $item. W przypadku niepowodzenia ($success === false), możemy pobrać daną np. z bazy danych i przypisać do zmiennej $item, a następnie metodą setItem() ustawić ją w cache.

Zend Framework 2 – wykorzystanie cache
Tagged on:                 

3 thoughts on “Zend Framework 2 – wykorzystanie cache

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Social Widgets powered by AB-WebLog.com.