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)
Но как сделать иначе придумать не могу.
- Too many heap sections, Sj 21.02.2008 15:35