github的地址是:https://github.com/likangjun/chat
demo: http://demo.likangjun.com/chat
这里是用MySQL
和txt
文件来保存的聊天记录,然后用js去不断的请求聊天内容展现到页面上而达到了即时的效果,这里也可以用redis
这种nosql
。之前还在网上看到过一个PHP+Swoole
扩展的即时聊天项目,地址是https://github.com/matyhtf/php-webim ,也值得去学习学习
先看下文件结构1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39chat
├─ ajax.php
├─ chat.php
├─ conn.inc
├─ css
│ ├─ main.css
│ └─ style.css
├─ get.php
├─ image
│ ├─ bg.jpg
│ ├─ close.png
│ ├─ logo.jpg
│ └─ user.jpg
├─ index.php
├─ jquery-1.6.min.js
├─ log
│ └─ 20161026.txt
├─ login.php
├─ logout.php
└─ README.md
log
是聊天记录存放目录
conn
是用来链接数据库的
index
,login
,logout
是登录,退出这些页面
ajax
是用于接受信息并储存在数据库或文件
最主要的还是chat.php
和get.php
chat
是聊天室页面,用ajax
不断的请求get.php
获得聊天内容并展示get.php
里把第一次请求时的聊天条数和第一次以后的聊天条数作对比,然后用死循环去不断查询数据库或者读本地文件获取聊天信息返回给chat.php
,从而形成了即时聊天
这个只是一个简单粗暴的方法,性能和体验上还达不到要求,后续也将会去学习研究更好的解决方案