search
HomeBackend DevelopmentPHP TutorialPHP实现聊天室的主动更新与被动更新_PHP

聊天的内容如何显示在屏幕上,一种是每隔一段时间刷新一次页面,读入全部聊天
内容,然后显示,这里采用的是js的document.write的方法实现不刷新的聊天页面
!

1 主页面的生成,规定了CSS类型,显示欢迎词
function write2(){
if(this.u.document==null)return;
this.u.document.writeln("");
this.u.document.writeln("ml; charset=gb2312>");
this.u.document.writeln("");

this.u.document.writeln("");
this.u.document.writeln("
//.................. 这里插入生成在线人数组的程序段


this.u.document.writeln("<script>"); <br />this.u.document.writeln("<p class=p9 align=left>"); <br />this.u.document.writeln("<p align=center>欢迎光临PlayBoy聊天室,本聊天室 <br />正在测试阶段,如有问题请与<a href=mailto:pccastle@sina.com>我们联系 <br /></script>

");
}

2 初始化进入信息,第一次进入聊天室

if($action == "enter")
{

/////////////////// 调用显示主屏幕的js程序 ////////////////////
print("parent.write2();n");

//发言内容,某某进入聊天室了
$message = "$name
到聊天室".$message." ".date("m月d日 H:i")."<script>parent.add('$name', <br />'$photo');parent.write1();</script>
";
}
//更新发言内容
while(file_exists($lockfile)){ $pppp++; }

//发言的锁定
fclose(fopen($lockfile,"w"));

//读入发言的总句数,也就是所有人一共发了多少言!我们可以保存每一个发言,但
是这样会占用大量的磁盘空间,我们采用了一种取模的方法,循环使用文件来减少
文件操作!
$talkmessage = file($filename);
$number = chop($talkmessage[0]);

//发言数增加一,然后保存
$talkhandle = fopen($filename,"w");
$number++;
fputs($talkhandle,$number);
fclose($talkhandle);

/去掉锁定
unlink($lockfile);

//对发言总数对10取模,作为文件名保存发言内容,也就是说第11句和第1句使用同
一个文件名,由于不可能同时有10句话没有更新,所以这是数在人不是非常多的情
况下很好!当然,考虑到人多的情况,可以设成100.
$filehandle = fopen("messageonline".($number%10).".php","w");
fputs($filehandle,$message);
fclose($filehandle);

//显示进入信息
print("parent.u.document.writeln("$message");n");

//调用主动刷新js程序,传递已经显示的发言数目
print("parent.flushwin($number)n");

//保存最后一次显示的发言
$last = $number;
}


3 处理发送表单的请求

//不处理空的发言和超过一定数目的发言
if( ($message != "")&&(strlen($message){

//检查发言者是否在线,防止意外
$onlineperson = file("useronline.dbf");
$personsign=0;
for($i=0;$i{
$person = split($split,$onlineperson[$i],99);
if($person[0] == $name)
{
$personsign = 1;
$person[3] = date("U");
break;
}
}

//在线时的处理程序
if($personsign == 1)
{

//添加发言时间的部分
$message = $message." ".date("m月d日 H:i")."
";


//锁定发言总数文件
while(file_exists($lockfile)){ $pppp++; }
fclose(fopen($lockfile,"w"));

//读入发言总数
$talkmessage = file($filename);
$number = chop($talkmessage[0]);

//总数加1,然后保存
$talkhandle = fopen($filename,"w");
$number++;
fputs($talkhandle,$number);
fclose($talkhandle);
unlink($lockfile);

//总数对10取模后以文件形式保存发言内容
$filehandle = fopen("messageonline".($number%10).".php","w");
fputs($filehandle,$message);
fclose($filehandle);
}
}

//////////////////////////////////////////////////////////////////
这样,表单的处理已经完成,下面的主动更新程序将会把新的发言内容显示在屏幕

//////////////////////////////////////////////////////////////////

4 主动更新的自动循环调用方法

可以使用&&pass= print($pass);
?>&&last="+winnumber;
flush.location=url
flushflag=false
}

//否则等待一个循环
flushtimerID=setTimeout("flushstart()",2000);
flushtimerRunning=true;
}

这种方法保证了在主程序不死的情况下,后台更新程序会一直运行下去!


5 主动更新程序



这样,每个发送的发言,经过被动更新程序处理保存到文件内,然后由一个循环的主
动更新程序完成显示任务!!!
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
win7补丁包(UpdatePack7)【64位+32位】更新到21.04win7补丁包(UpdatePack7)【64位+32位】更新到21.04Jul 10, 2023 pm 04:33 PM

win7补丁包(UpdatePack7)是俄罗斯大神制作的一款Win7系统补丁自动安装精灵,它支持Win764位和32位,集成了Win7发布至今所有补丁,还包含了NVME协议补丁,USB3.0补丁等等。win7补丁包(UpdatePack7)【64位+32位】下载UpdatePack7参数介绍/NVMe(集成NVMe驱动)/S(静默安装,不更改IE版本,不重启)/Silent(自动安装,界面显示安装进度)/Temp(指定释放路径到临时文件夹)/IE11(更新安装InternetExplorer1

PHP和REDIS:如何实现分布式缓存失效与更新PHP和REDIS:如何实现分布式缓存失效与更新Jul 21, 2023 pm 05:33 PM

PHP和REDIS:如何实现分布式缓存失效与更新引言:在现代的分布式系统中,缓存是一个非常重要的组件,它可以显著提高系统的性能和可扩展性。与此同时,缓存的失效与更新也是一个非常重要的问题,因为如果无法正确地处理缓存数据的失效与更新,就会导致系统数据的不一致。本文将介绍如何使用PHP和REDIS实现分布式缓存失效与更新,同时提供相关的代码示例。一、什么是RED

win10系统频繁更新,如何解决提醒重启问题?win10系统频繁更新,如何解决提醒重启问题?Jun 30, 2023 pm 09:57 PM

win10电脑老是提醒更新重启怎么办?win10的更新问题一直是大家比较头疼的,无论是更新前还是更新后,系统老是提醒更新重启,十分烦人。其实我们只要将对应服务关闭就可以了,下面就一起来看看具体方法吧。win10电脑老是提醒更新重启解决办法一、更新前提示1、首先我们在开始菜单中打开设置。2、选择更新和安全。3、再点击高级选项。4、将更新通知关闭即可。二、更新后提醒1、其实我们在完成更新之后,系统也有可能会老是提醒我们重启。2、这时候我们需要先右键计算机,选择理3、在系统工具中找到图所示。4、然后我

Vue中如何使用$forceUpdate强制更新组件Vue中如何使用$forceUpdate强制更新组件Jun 11, 2023 am 08:46 AM

Vue是一个流行的JavaScript框架,它通过使用组件化开发模式,使得我们可以轻松地构建可重用的交互式用户界面。但是某些情况下,我们需要手动更新组件而不是等待数据驱动更新,这时候可以使用Vue提供的$forceUpdate方法。在这篇文章中,我们将详细讨论Vue中如何使用$forceUpdate方法强制更新组件。Vue组件的渲染是由Vue的响应式系统驱动

如何在CakePHP中进行数据查询和更新?如何在CakePHP中进行数据查询和更新?Jun 03, 2023 pm 02:11 PM

CakePHP是一个流行的PHP框架,它提供了方便的ORM(对象关系映射)功能,使得查询和更新数据库变得非常容易。本文将介绍如何在CakePHP中进行数据查询和更新。我们将从简单的查询和更新开始,逐步深入,了解如何使用条件和关联的模型来更复杂地查询和更新数据。基本查询首先,让我们看看如何进行最简单的查询。假设我们有一个名为“Users”的数据表,并且我们想要

Win11bios怎么更新Win11bios怎么更新Jun 29, 2023 pm 03:22 PM

  Win11bios怎么更新?更新BIOS可以支持最新的硬件,也可以对以往的一些硬件进行优化。近期有部分Win11用户想要更新BIOS,但是不太清楚应该如何操作,对于这一情况,下面小编为大家带来了详细的Win11更新bios的方法,我们一起来看看吧。  Win11更新bios的方法  在进行更新之前,您需要执行一些任务。首先,您需要检查您的BIOS版本并记下它。然后,您可以继续为您的特定系统下载正确的BIOS。  1、检查您的BIOS版本  同时按下Windows和R键。  键入msinfo3

win11改win10系统教程的详细介绍win11改win10系统教程的详细介绍Jul 08, 2023 pm 09:21 PM

微软6月24号正式公布了win11系统,可以看到用户界面、开始菜单等和Windows10X中发现的非常相似。有的朋友在使用预览版的时候发现用的不习惯,想要改win10系统开使用,那么我们要如何操作呢,下面我们就来看看win11改win10系统教程,一起来学习一下吧。1、第一步是从Windows11打开新设置。在这里,您需要转到图像中显示的系统设置。2、在系统设置下,选择“恢复”选项。在这里,您将能够看到“以前版本的窗口”选项。您还可以在它旁边看到一个“返回”按钮,单击此按钮。3、您可以指定要返回

win10更新后无法开机怎么办win10更新后无法开机怎么办Jul 03, 2023 am 11:40 AM

win10更新后无法开机解决方法:1、通过“启动修复”进行自动修复;2、通过命令提示符检查和修复;3、进入安全模式以卸载Windows更新;4、使用命令提示符修复MBR;5、检查系统盘是否有坏扇区并进行修复;6、进行系统恢复。

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
1 months agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

This project is in the process of being migrated to osdn.net/projects/mingw, you can continue to follow us there. MinGW: A native Windows port of the GNU Compiler Collection (GCC), freely distributable import libraries and header files for building native Windows applications; includes extensions to the MSVC runtime to support C99 functionality. All MinGW software can run on 64-bit Windows platforms.

WebStorm Mac version

WebStorm Mac version

Useful JavaScript development tools

mPDF

mPDF

mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),