Като оставим Kohana настрана, защото никога не съм го използвал, това, което правите в момента, е основно това:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
т.е. получавате всички данни от MySQL с mysql_fetch_assoc
и ги съхранете всички в паметта на PHP, като го поставите в $data
. Това означава, че PHP трябва да има достатъчно памет, за да съхранява всички данни наведнъж, което няма.
Това, което искате да направите, е да извлечете един ред с резултати от MySQL, да направите нещо с него, след което да преминете към следващия ред, без да съхранявате всичко в паметта наведнъж:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
И не, моля, не използвайте остарелия mysql_ API, това е просто най-големият пример за общ знаменател тук. Освен това трябва да има по-добър начин да правите каквото искате, отколкото да се опитвате да извлечете и изведете 190 000 реда наведнъж.