Odkładając Kohanę na bok, ponieważ nigdy jej nie używałem, to, co obecnie robisz, to w zasadzie:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
Tj. pobierasz wszystkie dane z MySQL za pomocą mysql_fetch_assoc
i przechowuj je wszystkie w pamięci PHP, umieszczając je w $data
. Oznacza to, że PHP musi mieć wystarczająco dużo pamięci, aby przechowywać wszystkie dane na raz, czego nie ma.
To, co chcesz zrobić, to pobrać jeden wiersz wyników z MySQL, zrobić coś z nim, a następnie przejść do następnego wiersza bez zapisywania wszystkiego w pamięci naraz:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
I nie, nie używaj przestarzałego interfejsu API mysql_, to po prostu największy przykład wspólnego mianownika. Ponadto musi istnieć lepszy sposób na zrobienie tego, co chcesz, niż próba pobrania i wyprowadzenia 190 000 wierszy naraz.