Když odložím Kohana stranou, protože jsem ji nikdy nepoužil, to, co momentálně děláte, je v podstatě toto:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
Tj. všechna data získáváte z MySQL pomocí mysql_fetch_assoc
a uložte je všechny do paměti PHP vložením do $data
. To znamená, že PHP potřebuje mít dostatek paměti k uložení všech dat najednou, což nemá.
Co chcete udělat, je načíst jeden výsledný řádek z MySQL, něco s ním udělat a pak přejít na další řádek, aniž byste vše ukládali do paměti najednou:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
A ne, prosím nepoužívejte zastaralé mysql_ API, je to jen největší příklad společného jmenovatele. Také musí existovat lepší způsob, jak dělat, co chcete, než se snažit načíst a vytisknout 190 000 řádků najednou.