web在线聊天系统。非ajax轮询
生活随笔
收集整理的這篇文章主要介紹了
web在线聊天系统。非ajax轮询
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
利用php的死循環和刷新緩沖區實現。
?
瀏覽器發送請求到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;?
轉載于:https://www.cnblogs.com/iyoule/p/3683416.html
總結
以上是生活随笔為你收集整理的web在线聊天系统。非ajax轮询的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 轻松搞定javascript变量(闭包,
- 下一篇: mongodb 查询内嵌文档