parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Too many heap sections

Sj 21.02.2008 15:35

Здраствуйте. Очень нужна ваша помощь.

Вот есть такой вот кривой скриптик, который стал выдавать too many heap sections когда количество записей в бд подросло. Раньше было ок.


^while($st <= $en){
<td class="print" align="center"><b>$st.day<b></td>
^st.roll[day](1)

}
$st[^date::create[$sdate]]


<tbody>


^connect[$connect_db]{
$fam[^table::sql{select
id_c, f, i, o
from
c
ORDER BY
f
ASC
}]
}

^fam.menu{
<tr>

^connect[$connect_db]{
$ca[^table::sql{select
time, id_c
from
c_sig
WHERE id_c = $fam.id_c
GROUP BY DAYOFMONTH(time)

}]
}
<td class="print">$fam.id_c</td><td class="print">$fam.f ^fam.i.left(1). ^fam.o.left(1).</td>

$n(0)
^while($st <= $en){
<td class="print" align="center">
^ca.menu{
$parts[^ca.time.split[^#20;lh]]
$time[^date::create[$parts.0]]
^if($time <= $en && $time >= $st1){
^if($time == $st){+ $n($n+1)}{ }
}
}
^st.roll[day](1)
</td>

}

<td class="print">$n</td>
$st[^date::create[$sdate]]


</tr>
}

</tbody>


Что собственно он делает - мы вводим промежуток дат от $st до $en,
скрипт рисует табличку, где колонки это даты с шагом 1, а строки - фамилии. Работает так: считываем все фамилии из одной таблицы бд, перебирая их подсоединяемся к другой таблице шщем все записи где текущая фамилия и выбираем те в которых поле с датой попадает в промежуток от $st до $en. Я понимаю что скрипт написан достаточно криво, но плииз посоветуйте что можно сделать.
Меня очень беспокоит этот кусок:

^while($st <= $en){
<td class="print" align="center">^ca.menu{
$parts[^ca.time.split[^#20;lh]]
$time[^date::create[$parts.0]]
^if($time <= $en && $time >= $st1){
^if($time == $st){+ $n($n+1)}{ }
}
}
^st.roll[day](1)

Но как сделать иначе придумать не могу.