Neukládá se mi cache (do FileStorage)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Peetee
Člen | 75
+
0
-

Ahoj,

už asi hodinu koukám na následující kód a nějak mi uniká, kde je chyba:

	$cache = Nette\Environment::getCache('n1');
	Nette\Debug::barDump($cache, 'C1');
	$cache['a'] = 'b';
	Nette\Debug::barDump($cache, 'C2');

výpis v barDump:

C1
Nette\Caching\Cache(4) ▼
{
   "storage" private => Nette\Caching\FileStorage(3) ▼
{
      "dir" private => "<cesta>\temp\cache" (70)
      "useDirs" private => TRUE
      "journal" private => Nette\Caching\FileJournal(9) ►
   }

   "namespace" private => "n1\x00" (3)
   "key" private => NULL
   "data" private => NULL
}

C2
Nette\Caching\Cache(4) ▼
{
   "storage" private => Nette\Caching\FileStorage(3) ▼
{
      "dir" private => "<cesta>\temp\cache" (70)
      "useDirs" private => TRUE
      "journal" private => Nette\Caching\FileJournal(9) ►
   }

   "namespace" private => "n1\x00" (3)
   "key" private => "a"
   "data" private => "b"
}

Pokud tento skriptík spustím víc než jednou, tak by se v barDumpu mělo zobrazit již dvakrát stejný hodnoty „key“ a „data“. Nerozumím tomu, proč je při prvním spuštění NULL.

kravčo
Člen | 721
+
0
-

Peetee napsal(a):

Pokud tento skriptík spustím víc než jednou, tak by se v barDumpu mělo zobrazit již dvakrát stejný hodnoty „key“ a „data“. Nerozumím tomu, proč je při prvním spuštění NULL.

Nie. Premenné $key a $data sú pomocné premenné Cache a uchovávajú posledný kľúč a hodnotu, s ktorými keš pracovala (logicky sú teda pri prvom spustení NULL).

Nevypisuj keš, ale len jej položku; na získanie hodnoty z keše neexistujú iné metódy ako si vyžiadať konkrétny kľúč…

$cache = Nette\Environment::getCache('n1');
Nette\Debug::barDump($cache['a'], 'C1');
$cache['a'] = 'b';
Nette\Debug::barDump($cache['a'], 'C2');
Peetee
Člen | 75
+
0
-

Mockrát děkuji, já jsem pořád přemejšlel, kde je v mém uvažování chyba a ono je to takto snadný, děkuji.