2012-02-17 60 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