|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
熟悉了PHP和MYSQL开发的要领之后,再回头看你写的那个留言本,你也许会怀疑那真的是你写的吗?当然,如果屋里还有鬼的话,也许是它写的-_-教程|使用实例 PHP-Push手艺完成刷新功效
Server push 前一段工夫炒得很热的“推”手艺,不外网上大局部都是cgi的材料,偶然看到一个法国的网站上有这么个引见,惋惜法语看不懂,只能从他的法式中看懂点器材,现收拾整顿个例子出来人人进修一下。可以用于聊天室的数据传输、网站上的旧事更新、等等各类更新频仍的页面。
之前做刷新次要经由过程页面上加标签。
< META HTTP-EQUIV=REFRESH CONTENT="time;URL=url" >
或利用javascript的timeout+reload,不外这类刷新的办法取决于工夫的设定,没法一连的数据传输且工夫欠好肯定。采取了Server push的办事器在客户机做出一个恳求后,和客户机创立一个永世的毗连,然后办事器会依据客户机的恳求不休地把数据包推向办事器。那些你发觉不到的延迟会让你感觉办事器的呼应和你的恳求已到达了同步的水平。
先来看一下例子再注释。
img.php
< ?php
set_time_limit(0);
$file = "./1.jpg";
$sep = "gIrLsKiCkAsSiTsAySsOoNaTsHiRt";
if(ereg(".*MSIE.*",$HTTP_SERVER_VARS["HTTP_USER_AGENT"])){
//假如是ie阅读器,直接输入就加入,IE的不撑持哦,我没试出来过
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Content-type: image/jpeg");
header("Content-size: " . filesize($file));
readfile($file);
}else{
header("Content-Type: multipart/x-mixed-replace; boundary=$sep");
//这里是关头哦,看看MIME类型申明
//你会分明
print "--$sep
";
do{
print "Content-Type: image/jpeg
";
readfile($file);
print "
--$sep
";
flush();
$mt = filemtime($file);
do{
sleep (1);
clearstatcache();
}while($mt == filemtime($file));
}while(1);
}
? >
这就是一个永世履行的页面(收集不休的情形下),不休输入图片的内容,上面是挪用的页面。<img src=http://www.163design.net/p/b/img.php>,然后翻开你的netscape或其他非ie阅读器检查挪用页面,好象没甚么变更啊,别急,接着就是如何变化1.jpg这个图片了,写个别的的php页面来测试吧,好比弄2张图片按工夫来掩盖1.jpg(这个办法本人想,用拷贝掩盖也行,只需1.jpg有变更)。这时候你就看到挪用页面的图片主动更新了。
利用中你会发明个成绩:怎样图片不主动更新了。这是因为客户机在一段工夫内没有对办事器产生恳求,也就是某一段工夫内没有新的内容向阅读器输出,能够产生毗连超时景象。甚么举措处理呢?可以在履行页面中加个向阅读器发送一个空旌旗灯号,相似ftp毗连体例,下面页面中在do...while(1)间加个print("");
看完这个例子,应当晓得怎样处置不休更新的内容了,关头在img.php页面中的处置(可所以反省新的内容并输入),挪用的时分可以有img、script、frame等等。
对于PHP的语法结构,刚开始真的很不习惯,真搞不懂为什么每个变量之前都要加个“$”符号,每个语句写完之后都必须加上“分号”来表示此句已经结束,还有,PHP对字母的大小写是敏感的,写的时候一定要注意大小写的区别。 |
|