| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Таев Олег 23.11.2004 08:17
Пробуйте считывать/обрабатывать данные порциями, а после обработки выгружать массивы данных из памяти. С помощью метода ^memory:compact[] можно выбросить неинициализированные/пустые переменные.$start_line(1)
$read_limit(1000)
$recs_count(^int:sql{select count(ip) from traffic})
^while($start_line<=$recs_count){
$tab[^table::sql{select ip,bytes from traffic limit $start_line,$read_limit}]
^tab.menu{
^if($tab.ip eq $server){
^down.inc($tab.bytes)
}{
^up.inc($tab.bytes)
}
}
^start_line.inc($read_limit)
$tab[]
^memory:compact[]
}
$start_line[]
$recs_count[]
$read_limit[]
^memory:compact[]Путем нехитрых экспериментов вы выясните, какое значение $read_limit для вас оптимально (по памяти и быстроте обработки)