Zapnutí cache v Nette\Database

#1 před 8 měsíci

webdata
Člen
Registrovaný: 8. 9. 2010
Příspěvky: 45

Zapnutí cache v Nette\Database

Zdravím,

Jak je to s používáním cache v Nette\Database. Nikde jsem nenašel žádnou zmínku o tom jak to nastavit. Používám verzi Nette 2.0 Beta ze dne 24. 8. 2011.

Předem dík za info.

 

#2 před 8 měsíci

Vyki
Nette guru
Registrovaný: 12. 7. 2009
Příspěvky: 436

Re: Zapnutí cache v Nette\Database

Tak se mrkni do sandboxu https://github.com/…e/master/app, respektive do konfiguracniho souboru https://github.com/…/config.neon


http://ie6funeral.com – Kill IE6 ! ! !

 

#3 před 8 měsíci

Richard Faila
Člen
Registrovaný: 7. 5. 2011
Příspěvky: 13

Re: Zapnutí cache v Nette\Database

Vyki napsal(a):

Tak se mrkni do sandboxu https://github.com/…e/master/app, respektive do konfiguracniho souboru https://github.com/…/config.neon

A tam se dá vidět konkrétně co? Vidím jen normální konfigurák… Já jsme se to snažil zprovoznit jak to bylo ukázáno na http://wiki.nette.org/…tte-2-0-beta ale sám si nejsem si jistý jestli to mám správně.

 

#4 před 8 měsíci

Richard Faila
Člen
Registrovaný: 7. 5. 2011
Příspěvky: 13

Re: Zapnutí cache v Nette\Database

Ještě ukážu jak to mám já, třeba to někomu pomůže, protože ve videu to je jinak

config.neon

<?php
database:
      class: Nette\Database\Connection
      arguments: ['mysql:host=localhost;dbname=nette', 'root', '']

    model:
      class: Model
      arguments: [@database,@cacheStorage]

?>

V modelu potom:

<?php
`/**
 * Model base class.
 */
class Model extends Object
{
        /** @var Nette\Database\Connection */
        public $database;

        public function __construct(Nette\Database\Connection $database, $cacheStorage){
                $this->database = $database;
                $this->database->setCacheStorage($cacheStorage);
        }
?>

Samotného by mě zajímalo jestli to je správně, protože to místy vypadá, že to nefunguje.

Editoval Richard Faila (20. 9. 2011 20:01)

 

#5 před 8 měsíci

studna
Člen
Registrovaný: 4. 12. 2009
Příspěvky: 111

Re: Zapnutí cache v Nette\Database

Toto není zrovna pěkné řešení. Co třeba takto?

// ...
class ServiceFactory
{
        public static function createServiceDatabase( Container $container )
        {
                $db = new Connection(...);
                $db->setCacheStorage( $container->cacheStorage );
                return $db;
        }
}

config.neon

database:
        factory: ServiceFactory::createServiceDatabase

 

#6 před 8 měsíci

Tomáš Kuba
Člen
Registrovaný: 24. 11. 2010
Příspěvky: 15

Re: Zapnutí cache v Nette\Database

Pro ty pomalejší jako jsem já:

class ServiceFactory {
        public static function createServiceDatabase(DiContainer $container, $dns, $user, $password) {
                $db = new Connection($dns, $user, $password);
                $db->setCacheStorage($container->cacheStorage);
                return $db;
        }
}

v config.neon pak:

database:
        #class: Connection
        arguments: ['mysql:host=localhost;dbname=jmenodatabaze', 'uzivatel', 'heslo']
        factory: ServiceFactory::createServiceDatabase

Editoval Tomáš Kuba (4. 10. 2011 13:43)

 

#7 před 4 měsíci

mulisano
Nový člen
Registrovaný: 19. 1. 2012
Příspěvky: 8

Re: Zapnutí cache v Nette\Database

Richard Faila napsal(a):

Ještě ukážu jak to mám já, třeba to někomu pomůže, protože ve videu to je jinak

config.neon

<?php
database:
      class: Nette\Database\Connection
      arguments: ['mysql:host=localhost;dbname=nette', 'root', '']

    model:
      class: Model
      arguments: [@database,@cacheStorage]

?>

V modelu potom:

<?php
`/**
 * Model base class.
 */
class Model extends Object
{
      /** @var Nette\Database\Connection */
      public $database;

      public function __construct(Nette\Database\Connection $database, $cacheStorage){
              $this->database = $database;
              $this->database->setCacheStorage($cacheStorage);
      }
?>

Samotného by mě zajímalo jestli to je správně, protože to místy vypadá, že to nefunguje.

Toto řešení je pouze nepěkné nebo je zároveň i nefunkční?

 

#8 před 4 měsíci

mkoubik
Nette guru
Registrovaný: 28. 4. 2009
Příspěvky: 259

Re: Zapnutí cache v Nette\Database

Dá se to napsat jako

database:
  class: Nette\Database\Connection
    arguments: ['mysql:host=localhost;dbname=nette', 'root', '']

model:
  class: Model(@database,@cacheStorage)
  setup:
    - setCacheStorage(@cacheStorage)

 

#9 před 4 měsíci

David Grudl
Administrator
Registrovaný: 8. 2. 2005
Příspěvky: 5835

Re: Zapnutí cache v Nette\Database

Doporučuji jít touto cestou

 

Zápatí