web在线聊天系统。非ajax轮询
2014-04-23 17:31
218 查看
利用php的死循环和刷新缓冲区实现。
浏览器发送请求到PHP获取消息页面。
php接收到来之浏览器请求后。 循环获取数据库里面的消息。
当存在消息的时候。PHP告诉浏览器。我有消息给你。你接受一下。但是我的消息还还有哦。你要等我发完之后才能闪哦。、
浏览器:哦。你还有话说啊。那我先把你说的东西输出出来。我等你说。你啥时候说完。我啥时候闪。
上线项目。建议利用Memcache使用 .同时大型项目。不建议。比如。假设网站有20ip、的流量如果这20ip都使用了这个系统。那么服务器将始终保持这20w的连接
发送消息
数据库
浏览器发送请求到PHP获取消息页面。
php接收到来之浏览器请求后。 循环获取数据库里面的消息。
当存在消息的时候。PHP告诉浏览器。我有消息给你。你接受一下。但是我的消息还还有哦。你要等我发完之后才能闪哦。、
浏览器:哦。你还有话说啊。那我先把你说的东西输出出来。我等你说。你啥时候说完。我啥时候闪。
上线项目。建议利用Memcache使用 .同时大型项目。不建议。比如。假设网站有20ip、的流量如果这20ip都使用了这个系统。那么服务器将始终保持这20w的连接
/** * 接受消息 */ set_time_limit(0); header('content-type:text/html;charset=utf-8'); $con = new mysqli('localhost','root','','test'); $sql_ = "select id,content from msg where id > %d limit 1"; $i = 0; while(true){ $sql = sprintf($sql_,$i); $a = $con->query($sql); $ret = $a->fetch_array(); if(is_null($ret)){ usleep(100); echo ''; flush(); ob_flush(); }else{ $i = (int)$ret['id']; var_dump($ret['content']); flush(); ob_flush(); } }
发送消息
/** * 发送消息代码 */ if(isset($_GET['msg'])){ $msg = $_GET['msg']; $con = new mysqli('localhost','root','','test'); $msg = htmlspecialchars($msg); $sql = "INSERT INTO `msg` (`content`) VALUES ('%s')"; $sql = sprintf($sql,$msg); $a = $con->query($sql); $con->close(); } ?> <meta charset="utf-8"/> <form> <textarea name="msg"></textarea> <input type="submit" value="提交"> </form>
数据库
DROP TABLE IF EXISTS `msg`; CREATE TABLE `msg` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `content` text CHARACTER SET utf8 NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=21 DEFAULT CHARSET=utf8;
相关文章推荐
- GatewayWorker整合web系统开发多人分组在线聊天的步骤
- 基于Web在线聊天系统初步构想。
- Web 实现在线聊天的系统 强烈推荐
- EXT(dwr) Web在线聊天系统群聊和私聊的实现
- 在线聊天系统,关键代码,(jquery.ajax)
- php+ajax长轮询实现web即时聊天
- 简单在线聊天系统的实现(完成)
- Web 通信 之长连接、长轮询(long polling)(前端 ajax)
- Jetty+Dojo+Tomcat的Comet学习笔记-Web聊天系统【ChatRoom】
- 在线文件管理系统(Asp.net2.0,Ajax,3层架构)
- Unity轻轻轻轻轻量级多人在线聊天系统
- iOS开发利用系统推送Notifaction和轮询实现简单聊天系统
- 手把手教你写一个Java在线聊天系统
- iWMS PHP + AJAX 在线仓储管理系统
- 轻量级网页在线聊天系统
- Comet反向ajax技术实现客服聊天系统
- Web系统集成OCS在线状态功能
- Ajax-客户客服聊天系统
- 吉特仓储管系统(开源WMS)--Web在线报表以及打印模板分享