月归档:2011 年三月

2011.3月工作总结

目前弄一个网页即时聊天的东西,现有的网站本来有,要弄到新网站上,要改好多东西。总算从头到尾把整个流程搞清楚了。 用户:发送消息,js即时显示它在聊天框,ajax发送此消息给php处理,php插入消息并且查询客服的最新的一条消息,把客服的消息等信息以json形式返回给js,ajax调用完成complete后再次发起此同样的请求,成功success后在聊天框显示客服的消息,错误error在聊天框显示发送失败。 客服端一样。 大厅表hall 表,记录客服和用户的id,ip,客服的状态等 房间表room_x(可以分多个表,根据用户id或者啥的),记录聊天开始时间,结束时间,有效时间客服打开窗口产生记录,sid等 聊天横向记录表 consultlist  (分表或者定时向其他多个分表复制)主键sid ,记录一对一的一次聊天的信息 临时聊天信息表 info_x 临时存储聊天内容(分10个表,按sid%10取余),结束咨询时转移到consultinfo_x中 聊天信息表 consultinfo_x(数据量特大,需要分表),sid,消息内容,发送时间   可以用个js数组记录上一次返回的信息,如response,本次返回的为json。 response.sid<1 && json.sid>0 认为有用户进入,可以在此发送欢迎语什么的! response.sid>0 && json.sid<1 咨询已结束 另外客服的每次轮询处理,都更新它最后的活跃时间,可以记录在memcache中,可以根据这个时间比当前时间小20秒(假如为20秒,传输信息一般要不了这么长时间)判断客服是否关闭了窗口。 另外用memcache记录两段最后说话时间,一方超时5分钟,提示用户,时间到了,结束操作,日志记录!   客服端打开窗口等待用户进入时,hall表产生一条记录id,ip,status等,room_x产生一条记录id等 用户进入:consultlist产生记录产生sid,hall表填充用户数据,room表填充用户数据、保存sid、记录开始时间等 聊天时:不断更新room表记录,如有效时间 结束操作:将room表的信息转移给consultlist表,room表信息清空,hall表清空用户数据继续等待,info表数据转移到consultinfo_x,info_x表清空。

发表在 工作总结 | 标签为 , , , | 留下评论