2012-02-17 105 views
2

我需要为具有无限嵌套的高负载Zend基于框架的Web服务执行树形注释系统,而且这个系统必须非常快速。无限嵌套树形评论系统的算法?

评论必须发送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

数据 - 时间戳

+0

......和具体问题是..? – inhan 2012-02-17 15:05:27

+0

在数组的每个元素中存储所有必要的数据。 – NiLL 2012-02-17 15:10:13

回答

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/

+3

如果他使用的是教义,它支持[嵌套集合](http://www.doctrine-project.org/documentation/manual/1_1/hu/hierarchical-data) – Flukey 2012-02-17 15:10:31

+2

教义是一个很棒的解决方案。 – 2012-02-17 15:11:57