Работая вот над этим модулем:
http://www.uralstroyportal.ru/modules/price столкнулся с такой проблемой - при использовании стандартных функций API портала, например $some_tree->makeMySelBox() резко возрастает количество запросов к базе данных при неоднократном вызове данной функции.
Решение, которое пришлось применить, не совсем стандартно, но весьма эффективно. Итак:
Было:
Код:
for ($i=1;$i<=$some_count;$i++) {
...
$some_tree->makeMySelBox("some_name","some_name",0,0,"some_name[]");
...
};
Стало:
Код:
ob_start();
echo "<!--";
ob_flush();
$some_tree->makeMySelBox("some_name","some_name",0,0,"some_name[]");
$selBox = ob_get_contents();
echo "-->";
ob_end_flush();
for ($i=1;$i<=$some_count;$i++) {
...
echo $selBox;
...
};
Такой прием позволяет перенаправить вывод любой функции, выводящей что-то в браузер, в переменную, а затем повторно использовать уже содержимое этой переменной, не делая повторных запросов к базе.
Надеюсь, что пригодится.