PHP framework CodeIgniter defaultně ukládá všechny databázové dotazy, které zavoláte. U běžných webových stránek to není problém, navíc to umožňuje lepší ladění. Pokud ale máte dlouho běžící script, který hodně komunikuje s databází, může Vám toto chování pěkně zaplnit paměť. CodeIgniter totiž ukládá úplně každé volání. I když 1000× po sobě zavoláte stejný dotaz, tak ten se 1000× uloží do pole, takže paměťové nároky scriptu pěkně stoupají. A pokud máte script, který běží několik hodin, nebo dokonce dní, může z toho být velký problém, protože při dosažení PHP memory limitu script prostě spadne.
Toto chování lze naštěstí jednoduše vypnout v konfiguračních souborech připdáním parametru
$db[‚default‘][‚save_queries‘] = FALSE;
nebo můžete tento parametr upravit přímo ve scriptu zavoláním
$this->db->save_queries = FALSE
Až budete jednou řešit proč Váš script potřebuje tolik paměti, zkuste změnit tohle nastavení 🙂