社区
基础编程
帖子详情
PHP怎样实现网页的无刷新更新,就像有些聊天室中的话语显示窗口,最好有相关代码!(内空)
blstar
2001-02-16 06:58:00
...全文
903
4
打赏
收藏
PHP怎样实现网页的无刷新更新,就像有些聊天室中的话语显示窗口,最好有相关代码!(内空)
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
blstar
2001-02-16
打赏
举报
回复
先把分加上.
to:soff(soff)
謝謝!小弟愚笨,能不能麻烦再详细一些.
to:diychen.
先Ctrl+c下来慢慢研究.thanks!
soff
2001-02-16
打赏
举报
回复
牛啊,佩服佩服
diychen
2001-02-16
打赏
举报
回复
聊天的内容如何显示在屏幕上,一种是每隔一段时间刷新一次页面,读入全部聊天内容,然后显示,这里采用的是js的document.write的方法实现不刷新的聊天页面!
1 主页面的生成,规定了CSS类型,显示欢迎词
function write2(){
if(this.u.document==null)return;
this.u.document.writeln("<html><head>");
this.u.document.writeln("<meta http-equiv=Content-Type content=text/html; charset=gb2312>");
this.u.document.writeln("<style type=text/css>");
this.u.document.writeln(".p9 { font-size: 11pt; line-height: 15pt}");
this.u.document.writeln("body { font-size: 11pt; line-height: 15pt}");
this.u.document.writeln("a:visited { font-size: 11pt;color: #0000FF; text-decoration: none;}");
this.u.document.writeln("a:link { font-size: 11pt;color: #0000FF; text-decoration: none}");
this.u.document.writeln("a:hover { font-size: 11pt;color: #FF0000}");
this.u.document.writeln("</style>");
this.u.document.writeln("</head>");
this.u.document.writeln("<body);
//.................. 这里插入生成在线人数组的程序段
this.u.document.writeln("<script>");
this.u.document.writeln("<p class=p9 align=left>");
this.u.document.writeln("<p align=center>欢迎光临PlayBoy聊天室,本聊天室正在测试阶段,如有问题请与<a href=mailto:pccastle@sina.com>我们联系</a></p>");
}
2 初始化进入信息,第一次进入聊天室
if($action == "enter")
{
/////////////////// 调用显示主屏幕的js程序 ////////////////////
print("parent.write2();\n");
//发言内容,某某进入聊天室了
$message = "<a href=javascript:parent.cs('$name'); target=d>$name</a>来到聊天室".$message." ".date("m月d日 H:i")."<script>parent.add('$name','$photo');parent.write1();<\/script><br>";
}
//更新发言内容
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)<150))
{
//检查发言者是否在线,防止意外
$onlineperson = file("useronline.dbf");
$personsign=0;
for($i=0;$i<count($onlineperson);$i++)
{
$person = split($split,$onlineperson[$i],99);
if($person[0] == $name)
{
$personsign = 1;
$person[3] = date("U");
break;
}
}
//在线时的处理程序
if($personsign == 1)
{
//添加发言时间的部分
$message = $message." <font size=1>".date("m月d日 H:i")."</font><br>";
//锁定发言总数文件
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 主动更新的自动循环调用方法
可以使用<meta http-equiv="reflesh" content="3;url=messageflush.php?name=<?print($name)?>&&pass=<?print($pass)&&last=<?print($last)?>的方式更新!
我的程序以前就是使用这种方法自动更新的,但是我发现一个问题,那就是当这个更新程序出现运行错误时,他不会产生调用下次更新的代码,造成后台更新程序停止工作!所以我采用了js定时的方法来完成同样的功能!
var flushtimeID=null;
var flushRunning=false;
//上次更新标志
var flushflag = true;
function flushstop()
{
if(flushtimerRunning)clearTimeout(flushtimerID);
flushtimerRunning=false;
}
function flushstart()
{
flushstop();
//使用发送表单里面的上次显示的值
flushwin(this.d.document.inputform.last.value);
}
function flushwin(winnumber)
{
//如果上次更新正确,则调用下次更新
if(flushflag == true)
{
url="messageflush.php?name=<? print($name); ?>&&pass=<? print($pass); ?>&&last="+winnumber;
flush.location=url
flushflag=false
}
//否则等待一个循环
flushtimerID=setTimeout("flushstart()",2000);
flushtimerRunning=true;
}
这种方法保证了在主程序不死的情况下,后台更新程序会一直运行下去!
5 主动更新程序
<script Language='JavaScript'>
<?
//读入最大的发言数目
$message = file($filename);
$number = chop($message[0]);
//从上次显示的下一个发言开始到最大发言结束,显示发言内容
for($i=$last+1;$i<=$number;$i++)
{
//读入下一个发言内容
$filename = "messageonline".($i%10).".php";
$message = file($filename);
$tempmessage = split($split,$message[0],99);
//显示发言内容
print("parent.u.document.writeln(\"$message[0]\");\r\n");
}
//更新发送表单最后一个发言的数目
print("parent.d.document.inputform.last.value=$number;\n");
//通知主程序本次更新已经完成
print("parent.flushflag=true;\n");
?>
</script>
这样,每个发送的发言,经过被动更新程序处理保存到文件内,然后由一个循环的主动更新程序完成显示任务!!!
soff
2001-02-16
打赏
举报
回复
建立一个空帧,进行刷新,判断时候有新数据,这样浏览者并看不出来有在刷新。
【电力系统优化调度】含可再生能源的机组组合优化模型设计:构建经济稳定运行系统(可
实现
,有问题可联系博主)
内容概要:本文详细探讨了机组组合优化模型的构建,旨在通过合理安排各类发电机组的启停计划和优化出力分配,
实现
电力系统在经济性和稳定性上的最佳平衡。文章首先介绍了电力系统的四大主要组件——传统火电机组、风电机组、光伏机组和储能系统的参数及运行特性。接着,围绕最小化系统总运行成本这一目标,设计了优化目标函数,并明确了包括功率平衡约束、机组出力上下限约束、风光发电功率约束、弃风弃光约束、爬坡速率约束、储能系统荷电状态约束、充放电功率约束和充放电互斥约束在内的多项约束条件。最后,文章列出了求解机组组合优化模型所需的关键变量,如传统机组的开停状态、机组出力、启停成本、风电光伏实际出力、弃风弃光比例及储能系统的充放电功率和荷电状态,以
实现
系统的经济调度和可再生能源的最大化利用。 适合人群:从事电力系统研究、规划和调度工作的工程师和技术人员,以及对电力系统优化感兴趣的科研人员。 使用场景及目标:①帮助电力系统工程师理解不同类型发电机组的特点及其对系统稳定性、经济性和环保性的影响;②为制定合理的电力系统调度策略提供理论依据和技术支持;③促进可再生能源的有效整合,提高电力系统的灵活性和可靠性。 其他说明:本文提供的模型和方法不仅适用于当前的电力系统,也可为未来含高比例可再生能源接入的电力系统提供参考。文
中
涉及的具体数学公式和参数设定为实际应用提供了详细的指导,有助于提升电力系统的运行效率和经济效益。
项目管理手册释义.ppt
项目管理手册释义.ppt
电子商务的网上支付.ppt
电子商务的网上支付.ppt
综合布线系统设计.ppt
综合布线系统设计.ppt
计算广告技术之大数据下的短文本
相关
性计算.ppt
计算广告技术之大数据下的短文本
相关
性计算.ppt
基础编程
21,893
社区成员
140,347
社区内容
发帖
与我相关
我的任务
基础编程
从PHP安装配置,PHP入门,PHP基础到PHP应用
复制链接
扫一扫
分享
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章