Lägger du Kohana åt sidan, eftersom jag aldrig har använt det, vad du gör just nu är i princip detta:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
d.v.s. du får all data från MySQL med mysql_fetch_assoc
och lagra dem alla i PHPs minne genom att trycka in det i $data
. Det betyder att PHP måste ha tillräckligt med minne för att lagra all data på en gång, vilket det inte har.
Vad du vill göra är att hämta en resultatrad från MySQL, göra något med den och sedan gå vidare till nästa rad utan att lagra allt i minnet på en gång:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
Och nej, använd inte det föråldrade mysql_ API:et, det är bara det största exemplet på den gemensamma nämnaren här. Dessutom måste det finnas ett bättre sätt att göra vad du vill än att försöka hämta och mata ut 190 000 rader på en gång.