Selection s velkou tabulkou a memory limit
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- matopeto
- Člen | 395
Zdravim
mam mensi problem s Database Selection, pokusam sa nacitat zaznamy s velkej tabulky (o priblizne 100000 – 200000 zaznamoch), cez tieto zaznamy nasledne iterujem a vytvaram z nich nieco ako csv.
Problem je v tom, ze Selection si celu tabulku chce nacitat do pamate (pri execute() si to dava do $data a $rows) co sposobi pretecenie memory_max_limit.
Kedze data iterujem nepotrebujem mat v pamati celu tabulku, staci mi aktualny riadok. Co by tak bolo, keby som robil klasicky cez PDO, lenze z istych dovodov musim pouzit nette database.
Nestretol sa niekto z vas s podobnym problemom a pripadne riesenim?
- matopeto
- Člen | 395
Mozno sa to bude niekomu hodit, i ked je to celkom jasne ako so selection spravit normalne query (pokial este nebolo pustene):
<?php
if ($data instanceof Selection) {
$selection = clone $data;
$sql = $selection->getSql();
$connection = $selection->connection;
$data = $connection->queryArgs($sql, $selection->getSqlBuilder()->getParameters());
}
?>