我正在使用PHP编写论坛系统。
我目前正在SQL数据库中存储线程ID,标题,作者,视图和其他属性,然后将线程主体(HTML和BBcode)存储在以线程ID命名的文件夹内的文本文件中。
在实践中,获取数据库值非常简单,然后从文本文件中抓取线程主体,但我想知道这是否是“正确的方法”?我个人没有遇到任何问题,但如果事实证明这是非常低效的,我应该将线体HTML和BBcode存储在数据库中,然后我会改变。
然而,对我来说,在数据库中存储这样一个(非常可能)巨大的多行文本串以及许多不同的字符似乎是错误的 - 我被教导说数据库更多用于短期'值'而不是网站内容。
我只想对此作出明确的答复,因为无论我在哪里做得恰到好处,都会困扰我多年。
有谁知道论坛系统如何存储线程?
加 感谢您的答案,所以最好将线程内容存储在数据库中,我应该使用哪种字段类型? 回复怎么样?另一个表有线程ID和注释ID,然后是注释体? 我是这个数据库的新手,所以感谢你的帮助。
答案 0 :(得分:4)
Confluence(商业维基)将整个页面内容存储在一个列中。
在数据库中存储大文本的原因是:
答案 1 :(得分:0)
将线程存储在数据库中是最佳做法,因为这样可以更轻松地进行缩放和搜索。
如果您想继续使用文件来存储内容,我建议您使用GridFS的内容。基本上只是整理文件并将它们存储在NOSQL中。
答案 2 :(得分:0)
我知道DotNetNuke和AspDotNetStorefront使用数据库来存储这些数据。这些不是论坛,而是内容管理系统和具有内容管理功能的购物车。
我还尝试了几个论坛(例如YAF),所有这些论坛都使用了数据库。就个人而言,我坚持使用数据库中的HTML,任何图像/内容文件都应存储在磁盘上,并引用它们在HTML中的位置。
也许是存储在数据库中的最强参数:使用LIKE子句搜索文本字段比在文本文件中搜索强文件要容易得多。
另外,有免费的论坛软件cout那里,我可以问你为什么要从头开始写一个新的?我意识到可能有很好的理由,但万一这是你还没有想到的事情......
<强>加强>
我的大多数参考文献都是.NET代码。这是一个用PHP编写的开源论坛:http://www.phorum.org/
答案 3 :(得分:0)
这个问题已被接受,但是你应该查看phpbb3(http://www.phpbb.com/)。非常强大的PHP论坛。可以为您节省一些开发时间:D
答案 4 :(得分:0)
我同意其他答案,将所有数据存储在数据库中,简化了扩展,备份/恢复,允许您查询数据等。
如果您关注性能,可以为页面内容实现缓存。我知道PHPBB通过在带有过期时间戳的文本文件中使用序列化数组来实现此目的。也可以使用memcached或其他方式完成。
将数据存储在数据库中可以提供最大的灵活性和便利性,可以通过缓存数据来处理与向最终用户提供数据相关的大多数问题。