开发者社区> 问答> 正文

耗时半年,终于开发了第一款基于nosqlphp的开源论坛

[font='Microsoft YaHei', Verdana, sans-serif, 宋体]爱码士倒计时页面: www。2ma4。com/countdown,咋没法发网址???
[font='Helvetica Neue', Helvetica, Arial, sans-serif]一直以来,我就想打造一个专为极客和码农们热烈交流的社区,纵观国内IT论坛,基本都是一个帖子下面平行分布各种回复,每个回复之间通过@相连接,有时经常都要找半天这个人到底是在回复谁?比如ruby-china,phphub,V2EX,cnodejs,golang中国 等等,这些社区都做得很精美小巧,但是,却难以将回复者之间的关系调动活跃起来。 [font='Helvetica Neue', Helvetica, Arial, sans-serif]去年8月份,我便开始动手编写“爱码士”这个论坛,我希望回复者能够像网易盖楼那样,一层一层彼此热情高涨,在设计过程中我参考了网易盖楼和disqus等网站的盖楼设计,但这些设计都不是太完美,逐渐向内缩进的盖楼意味着盖楼的楼层数始终有个最大值,印象中网易盖楼到70层时便塌楼了,因此,我设计了一种新的“堆栈式”盖楼设计:
[font='Helvetica Neue', Helvetica, Arial, sans-serif]

[font='Helvetica Neue', Helvetica, Arial, sans-serif]盖楼一层层向上推进,理论上支持无限多的楼层 [font='Helvetica Neue', Helvetica, Arial, sans-serif]在前端方面,码农们眼中从来都是干净、整洁、纯粹的东西是最美的设计,因此,我将爱码士整个论坛都设计的非常干净简单: [font='Helvetica Neue', Helvetica, Arial, sans-serif]帖子页:
[font='Helvetica Neue', Helvetica, Arial, sans-serif]

[font='Helvetica Neue', Helvetica, Arial, sans-serif]站内私信发送:
[font='Helvetica Neue', Helvetica, Arial, sans-serif]

[font='Helvetica Neue', Helvetica, Arial, sans-serif]个人profile页:
[font='Helvetica Neue', Helvetica, Arial, sans-serif]

[font='Helvetica Neue', Helvetica, Arial, sans-serif]为增强用户之间好感,加强互动,头像hover widget显示了彼此赞了多少,回复了多少
[font='Helvetica Neue', Helvetica, Arial, sans-serif]

[font='Helvetica Neue', Helvetica, Arial, sans-serif]在系统架构上,爱码士使用了经典的MVC架构,这个MVC也是内置在自己编写的一个很小巧的php框架中,系统存储采用了国人开发的一款基于Google leveldb的nosql:ssdb [font='Helvetica Neue', Helvetica, Arial, sans-serif],ssdb简单的说就是一个存储在硬盘上redis,其使用协议和redis相同,但由于数据全部存储在硬盘上,并且支持亿级数据,因而扩大了容量的同时大幅降低了成本。相对于传统的php+MySQL+memcache(or filecache)后端设计,ssdb可以多出很多特性,比如setx可以限制用户频繁对一个帖子进行回复:爱码士将每个人对于一个帖子的回复setx一个有存活时间的flag,在这个flag存活期内,用户无法再对这个帖子进行回复。但用户发送私信行为不能用setx进行限制,不可能让用户每隔10分钟发送一条私信吧,万一有多条连续重要的私信呢,这时,借助于ssdb的list特性,我们可以为每个用户发送私信的时间戳设置一个队列,尾部入栈,顶部出栈,这样,用户在规定时间内发送次数多于某个预设值时阻止发送。 [font='Helvetica Neue', Helvetica, Arial, sans-serif]在盖楼的数据库设计方面,为了达到回复内容的可控性,我没有把回复HTML写死在数据库里,而是将回复reply_id以json形式存在hashmap中 [font='Helvetica Neue', Helvetica, Arial, sans-serif]系统帖子排序分为“默认排序”和“最新帖子”,默认排序是按照stackoverflow的算法 [font='Helvetica Neue', Helvetica, Arial, sans-serif]。 [font='Helvetica Neue', Helvetica, Arial, sans-serif]整个爱码士编写大概耗时半年,其中个人感觉最难的就是私信发送系统了,私信没有采用websocket,php不适合干这个,也没有采用长轮询的方式,而是js setinterval定时请求,通过jquery trigger click刷新按钮请求服务器,由于第一次使用nosql编写这个在线聊天系统,可能会有考虑不周的bug出现。 [font='Helvetica Neue', Helvetica, Arial, sans-serif]系统前端只引用了jquery库,为了界面美观干净,没有使用臃肿的bootstrap,全站公用一个global.js和base.css,站长二次开发的时候会很方便查看代码 [font='Helvetica Neue', Helvetica, Arial, sans-serif]从mockup构想,到HTML和css UI设计,然后是后端架构和数据库设计,到最后的js Ajax前后调用,自己花了半年的时间完成,希望大家能尊重劳动成果,一个人开发所以bug难免,加之第一次使用ssdb,希望大家能抱着平和的态度指出bug,目前倒计时页面已经放出,系统目前PC版已经制作完成,mobile端正在制作中,待bug修复完毕后,我会将PC端代码以安装包形式上传至github供站长二次开发和安装

展开
收起
reign 2016-03-02 18:19:44 11380 0
5 条回答
写回答
取消 提交回答
  • 学习探索元宇宙。所有擅长技术都不擅长。
    学习了
    2016-03-11 13:03:50
    赞同 展开评论 打赏
  • 一个程序员,欢迎骚扰!!!
    界面 挺干净的
    2016-03-03 14:46:24
    赞同 展开评论 打赏
  • Re耗时半年,终于开发了第一款基于nosqlphp的开源论坛
    这怎么看怎么像广告。
    2016-03-03 14:22:35
    赞同 展开评论 打赏
  • 解决方案工程师,负责为企业规划上云迁移方案和云上架构设计,在网站建设开发和云计算领域有多年经验,专注于Linux平台的系统维护以及应用部署。致力于以场景化的方式让云计算,用更加通俗易懂的方式让更多人体验云计算,让云端的计算更质朴的落地。
    帖子重新编辑一下吧
    2016-03-02 20:29:31
    赞同 展开评论 打赏
  • 阿里云论坛版主,QQ 1978638808
    发错板块了。
    2016-03-02 20:12:20
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
腾讯手游性能优化之路 立即下载
新浪广告系统的服务化优化历程 立即下载
阿里云栖开发者沙龙PHP技术专场-静态扫描为你的项目上线保驾护航-周梦康 立即下载