具有无限嵌套的树评论系统的算法?

时间:2012-02-17 14:54:43

标签: php zend-framework

我需要为基于Zend框架的高负载嵌入式Web服务做一个树注释系统,这个系统必须非常快。

必须以简单的数组(如bellow)为Zend_View发送注释。在Zend_View中,将通过foreach()显示整个注释。结构将与CSS类一起显示。

array(
   '0' => 'comment1 (here must be a a much of data)',
   '1' => 'comment for comment1',
   '2' => 'comment2',
   '3' => 'comment3',
   '4' => 'comment for comment3',
   '5' => 'comment of comment ^_^ '
);

现在,我可以从模型中收到所需的所有评论页面,按日期排序。它们的结构如下所示。

id | page_id |用户|父母|日期|文字&等

id - AI主键

page_id - TINY int

用户 - int

- TINY int

数据 - 时间戳

1 个答案:

答案 0 :(得分:4)

最简单和最不优化的

用于无限制嵌套是评论中的父/子关系:

Comment
---
id_comment
id_parent ALLOW NULL
body
...etc

要输出此信息,您必须首先选择所有父项(父项为NULL的注释),然后使用递归函数为每个父项选择每个级别的子项并输出它。毋庸置疑,这是太多的开销。

我建议您查看嵌套集模型:

http://en.wikipedia.org/wiki/Nested_set_model

使用嵌套集模型,您可以使用一个查询选择整个树。

我没有太过深入研究这个例子,但也许可以看一下:http://devzone.zend.com/1675/class-for-managing-nested-set-data/