Hvis du lægger Kohana til side, fordi jeg aldrig har brugt det, er det, du gør i øjeblikket, dybest set dette:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
dvs. du får alle data fra MySQL med mysql_fetch_assoc
og gem dem alle i PHP's hukommelse ved at skubbe det ind i $data
. Det betyder, at PHP skal have nok hukommelse til at gemme alle data på én gang, hvilket det ikke har.
Det du vil gøre er at hente en resultatrække fra MySQL, gøre noget med den og derefter gå videre til næste række uden at gemme alt i hukommelsen på én gang:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
Og nej, brug venligst ikke den forældede mysql_ API, det er bare det største fællesnævner eksempel her. Der skal også være en bedre måde at gøre, hvad du vil, end at prøve at hente og udskrive 190.000 rækker på én gang.