php评论使用websocket
2018-06-22 05:39:00来源:未知 阅读 ()
一般评论分这几种模式:1.盖楼模式(例如网易新闻这种的,较为复杂)2.单条新增模式(比如laravel-china社区的评论系统,也是不盖楼模式)
1.单条新增模式比较简单(1.单条模式:不管新增评论还是回复评论都是一条新评论 2.单条引用模式:新增评论是一条新评论,回复评论时下面会显示会显示回复的是哪条评论)
单条模式:(数据库设计)
id (自增i主键,评论id)
content (评论内容)
user_source (用户来源,微信,微博,app等)
user_code (用户标识,app端传来识别用户的)
user_pic (用户头像)
add_time (添加时间)
level (是否置顶)
其它字段......
单条引用模式(数据库设计):
id (自增主键,评论的id)
content (评论内容)
add_time (评论时间)
r_id (被回复者的id)
r_content (被回复者评论内容)
r_time (回复时间)
level (回复是否置顶)
其它字段........(这里我喜欢把回复的评论和被回复评论当作一条评论,在控制器里根据r_id(被回复的评论id)去redis里取数据,如果没有就去查数据库并存入redis设置过期时间,把获得的数据插入数据库,也可以去掉r_开头的字段换为parent_id,通过这个遍历查询去获取)
2.盖楼这种模式目前我会的是通过parent_id来递归查询,如果是第一条被评论的parent_id为0,其余parent_id是被评论的id,但这种方式特别消耗内存
从前端获得了评论的数据,我们用websocket进行发送的时候,最好压缩一下评论字段,这样可以节约服务器资源,比如有10000个人在线,其中一人发了一条评论,其余9999个人都得看见,那本来很长的字段压缩后总数据量大小就减少了,
用websocket发送时可以通过post方式和redis订阅方式发送,我更倾向于redis订阅方式的发送,你可以对评论添加进行日志的管理
post方式发送要有websocket的服务器地址和要发送的数据,发送的数据中要有一个key值是在websocket中注册过的
redis订阅方式的发布要先连上redis服务器,也要在websocket上注册过的key,还有要发送的数据
评论发送websocket时也分为先审后发和先发后审,先审后发比较简单,有数据先进redis队列,然后通过Linux的crontab程序刷进数据库,后台要操作哪条就发哪条的websocket
先发后审的话有数据也是先进redis队列,评论并发多的话就要有两种队列,发websocket的队列和不发websocket的队列,然后通过Linux的crontab程序刷进数据库
crontab是最低每分钟执行一次,你可以自己写一个php文件每秒执行一次,php文件里就写个for循环执行,但要在文件最前部加上这么一段代码
$cc = exec("ps -ef |grep '" . __FILE__ . "' | grep -v 'grep' | wc -l");
if ($cc > 10) {
exit("program is running……");
}
这是防止某个程序执行太多,让服务器崩溃,本人菜鸟级别,如果以上有什么不对的欢迎指出来
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:FuelPHP 系列(一) ------ Oil 命令
下一篇:js单图片上传
- PHP写UltraEdit插件脚本实现方法 2020-03-29
- php 带逗号千位符数字的处理方法 2020-03-28
- PHP三元运算符的结合性介绍 2020-03-28
- PHP静态延迟绑定和普通静态效率的对比 2020-03-28
- 基于php流程控制语句和循环控制语句 2020-03-28
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash