Pomoc s cachovanim funkce
- MW
- Člen | 626
Prosim o pomoc s pouzitim cache:
v template nacitam v cyklu takove male grafy:
template:
...
{?$mdata = [$sloupec1->500, $sloupec2->1000]} //data pro graf
{?$ident = $iterator->getCounter()} // identifikator pro cache ?!
<img src="{plink Graph:detailGraph, $mdata, $ident}" class="graph">
...
pak mam presenter GraphPresenter:
function actionDetailGraph($mdata, $ident) {
$storage = $this->context->cacheStorage;
$cache = new Nette\Caching\Cache($storage, $ident);
$image = $cache->call(callback(__CLASS__, 'generateDetailGraph'), $mdata);
return $image;
}
static function generateDetailGraph($mdata) {
$new = new \Graph\graph('3dcolumn', 100, 100, '#fffeff', '8x13iso.gdf');
$new->enable_aliasing();
$new->set_values($mdata, 0, 'gold');
$new->paint_lines('#000000', 'lines', 'lines');
$new->padding_bottom = 1;
$new->padding_left = 1;
$new->padding_right = 1;
$new->padding_top = 1;
$new->plot();
}
plot() vraci pak obrazek.
Onehda jsem tady neco podobneho zahledl, ale nebylo to doresene…
Toto me chybu nehlasi, ale nefunguje. Generuju cca 10 grafu za sebou a trva to desne dlouho.. proto potrebuji cachovat jakoby vysledek funkce DetailGraph.
V adresari cache nevidim nic, jen cely template. Pokud dam cely template do {cache}.
Delam neco spatne?
Diky !
- nanuqcz
- Člen | 822
Ahoj, pro cachování generovaných obrázků bych hledal inspiraci tady ;-) Jde o to, že si celý vygenerovaný obrázek uložíš jako soubor (třeba s příponou .png) a pak jen vracíš cestu k němu. Nový obrázek generuješ jen tehdy, pokud jeho soubor chybí. Náze souboru může být třeba nějaký hash vstupních dat, nebo tak něco.