Mengesampingkan Kohana, karena saya belum pernah menggunakannya, apa yang Anda lakukan saat ini pada dasarnya adalah ini:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
Yaitu. Anda mendapatkan semua data dari MySQL dengan mysql_fetch_assoc
dan simpan semuanya di memori PHP dengan memasukkannya ke $data
. Itu berarti PHP perlu memiliki cukup memori untuk menyimpan semua data sekaligus, padahal tidak.
Yang ingin Anda lakukan adalah mengambil satu baris hasil dari MySQL, melakukan sesuatu dengannya, lalu melanjutkan ke baris berikutnya tanpa menyimpan semuanya dalam memori sekaligus:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
Dan tidak, tolong jangan gunakan mysql_ API yang sudah usang, itu hanya contoh common denominator terbesar di sini. Selain itu, pasti ada cara yang lebih baik untuk melakukan apa pun yang ingin Anda lakukan daripada mencoba mengambil dan menghasilkan 190.000 baris sekaligus.