Nette\Database při vykonání dotazu spotřebuje veškerou paměť
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- zool
- Člen | 144
AHoj chtel jsem se zeptat, mám routu napsanou asi takto
$routerProdukt = new RouterProdukt('<produkt>/',array(
'produkt' => array(
Route::FILTER_OUT => function ($id) use ($container){
if(!is_numeric($id))
{
return $id;
}
else
{
$cache = $container->cache;
$adresaList = $cache->load("adresaList2");
if ($adresaList == NULL) {
/********************* Zde mi to vezme veškerou paměť *******************************************/
$adresaList = $container->produkty->table->fetchPairs('id', 'adresa');
/********************* Zde mi to vezme veškerou paměť *******************************************/
$cache->save("adresaList2", $adresaList);
}
if (isset($adresaList[$id])) {
$adresa = $adresaList[$id];
}
else
{
$adresaList = $container->produkty->table->fetchPairs('id', 'adresa');
$cache->save("adresaList2", $adresaList);
$adresa = $adresaList[$id];
}
return $adresa;
}
}
),
'module' => 'Front',
'presenter' => 'Produkt',
'action' => 'default'
));
$routerProdukt->context = $container;
$router[] = $routerProdukt;
Normálně mi funguje jak má, ale problém nastal, když má tabulka produktů přiblížně 60 tisíc produktů. Tak při vykonání dotazu ($adresaList = $container->produkty->table->fetchPairs(‚id‘, ‚adresa‘);) mi zabere všechnu interní paměť, nevíte prosím co s tím. Děkuji
Editoval zool (23. 4. 2013 21:47)