Bỏ Kohana sang một bên, bởi vì tôi chưa bao giờ sử dụng nó, những gì bạn hiện đang làm về cơ bản là thế này:
$result = mysql_query(...);
$data = array();
while ($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
I E. bạn đang nhận tất cả dữ liệu từ MySQL với mysql_fetch_assoc
và lưu trữ tất cả chúng trong bộ nhớ của PHP bằng cách đẩy nó vào $data
. Điều đó có nghĩa là PHP cần có đủ bộ nhớ để lưu trữ tất cả dữ liệu cùng một lúc, điều mà PHP không có.
Những gì bạn muốn làm là tìm nạp một hàng kết quả từ MySQL, làm điều gì đó với nó, sau đó chuyển sang hàng tiếp theo mà không cần lưu trữ mọi thứ trong bộ nhớ cùng một lúc:
$result = mysql_query(...);
while ($row = mysql_fetch_assoc($result)) {
echo $row['foo'];
}
Và không, vui lòng không sử dụng API mysql_ không được dùng nữa, nó chỉ là ví dụ mẫu số chung lớn nhất ở đây. Ngoài ra, phải có một cách tốt hơn để làm bất cứ điều gì bạn muốn làm hơn là cố gắng tìm nạp và xuất 190.000 hàng cùng một lúc.