CodeIgniter $db[‚save_queries‘] === možný ‚memory leak‘

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í 🙂

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *