Nette\Database a uvolňování paměti
- tomas.lang
- Člen | 53
Zdravím,
používám PHP ve verzi PHP 5.3.13 a Nette v poslední verzi z https://github.com/…its/f-db-dev.
Problém je s uvolňováním paměti po volání dotazů na DB, konkrétně:
<?php
memory_get_usage(true); // 10MB
$sql = $this->database->table('some_table')->limit(10000);
foreach ($sql as $row)
{
$a[$row->col_a] = $row->col_b;
} // foreach pouzit oproti ->fetchPairs kvuli testovacim ucelum
memory_get_usage(true); // 30MB
$a = null;
$sql = null;
memory_get_usage(true); // 30 MB
?>
Při dumpování Nette\Database\Connection jsem si všiml, že volané dotazy se tam logují, a to i přesto že jsem se pokusil logování vypnout (v config.neon u nette:database:database nastaveno debugger: false).
Skript běží v CLI prostředí – jedná se o import, kdy potřebuji držet v paměti některá data přednačtené – ale hlavně je po využití uvolňovat.
Je zde nějaká možnost jak uvolňovat data na straně Nette\Database\Connection které jsem si nevšiml? Jak toto případně řešíte?
- tomas.lang
- Člen | 53
Četl, četl – tvoje úprava mi bohužel moc nepomohla, takže jsem čekal že mi pomůžou ty úpravy na větvi f-db-dev, ale ani tady se nic nekonalo, tak jsem napsal napsal…
Jinak chápu tedy dobře, že jde primárně o chybu v PHP a nepohnu s tím? (tedy kromě nepoužívání PDO)