Colocando Kohana de lado, porque eu nunca usei, o que você está fazendo atualmente é basicamente isso:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
Ou seja você está obtendo todos os dados do MySQL com
mysql_fetch_assoc
e armazená-los todos na memória do PHP colocando-os em $data
. Isso significa que o PHP precisa ter memória suficiente para armazenar todos os dados de uma vez, o que não tem. O que você quer fazer é buscar uma linha de resultado do MySQL, fazer algo com ela e passar para a próxima linha sem armazenar tudo na memória de uma só vez:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
E não, por favor, não use a API mysql_ obsoleta, é apenas o maior exemplo de denominador comum aqui. Além disso, deve haver uma maneira melhor de fazer o que você quiser do que tentar buscar e gerar 190.000 linhas de uma só vez.