不使用数据库或文件在PHP中基于Web的聊天

Set*_*ath 16 php design-patterns web-applications

我正在尝试使用PHP实现实时聊天应用程序.是否可以在不使用数据库或文件等持久数据存储的情况下执行此操作.基本上我需要的是一个用PHP编写的调解员

  1. 接受客户端浏览器的消息
  2. 将消息广播给其他客户端
  3. 忘记消息

Rup*_*tel 14

你应该看看html5的Web套接字.它使用双向连接,因此您不需要任何数据库或文件.任何来到服务器的聊天消息都将直接发送给其他用户浏览器而无需任何Ajax调用.但您还需要设置Web套接字服务器.

Web套接字也用于许多实时应用程序.我很快就会编写完整的教程.我会通知你.


Pit*_*ate 8

刚刚尝试过我以前从未做过的回答这个问题的事情.似乎工作,但我只测试了一次.我没有使用Socket,而是使用了共享的Session变量.基本上,无论用户如何,我都强制Session_id为相同的值,因此它们都共享相同的数据.从快速测试看起来似乎有效.这是我做的:

session_id('12345');
session_start();
$session_id = session_id();
$_SESSION['test'] = $_SESSION['test'] + 1;
echo "session: {$session_id} test: {$_SESSION['test']} <br />";
Run Code Online (Sandbox Code Playgroud)

所以我的思考过程就是你可以简单地将聊天信息存储在Session变量中,并强制所有人,无论他们使用共享会话.然后,您可以简单地使用ajax继续重新加载当前的Session变量,并在添加消息时使用ajax编辑会话变量.此外,您可能希望将Session设置为永不过期或具有非常长的maxlifetime.

正如我所说,我只是玩了几分钟,看它是否会奏效.

  • OMG从来没有在我最疯狂的想法中有这个想法.感谢分享这个,它的工作原理!.但是当天结束时,数据存储在文件中,就像@stefreak说的那样.感谢这种特殊的想法. (2认同)

Mik*_*osh 6

你会想要使用Sockets.本文将准确介绍您要执行的操作:http://devzone.zend.com/209/writing-socket-servers-in-php/