仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1500|回复: 18
打印 上一主题 下一主题

[学习教程] PHP网站制作之PHP-Push手艺完成刷新功效

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-2-4 00:29:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
会HTML吗?会,我能编好几个大表格排板的网页啦!刷新   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("");



以上是转的局部,因为对照有乐趣,在GOOGLE上找了一下,人人可以看看上面的材料.

Requirements
Works with Apache-1.3.14/PHP4.0.3pl1 server and Various Netscape clients. Probably many other server combos. Tested on Netscape 4.7x and 6.0/Mozilla.
Does NOT WORK WITH IE. Internet Exploiter does not support x-mixed-replace server-push as far as I know. If a browser has "MSIE" in its User-Agent string the script will display one image and exit.

Update 20020108: Poked around freshmeat for a bit and found Andy Wilcock's Cambozola java applet which seems to work well with my php script to make the stream viewable under IE. Beware that the current version doesn't work under "Name-based" virtual hosts but I'll have a patch for it soon.
Source
Download

<?
$file = "./latest.jpg";
$sep = "gIrLsKiCkAsSiTsAySsOoNaTsHiRt";

if (ereg(".*MSIE.*",$HTTP_SERVER_VARS["HTTP_USER_AGENT"]))
{
# If IE, spit out one pic and exit
header("Cache-Control: no-cache");
header("Pragma: no-cache");
header("Content-type: image/jpeg");
header("Content-size: " . filesize($file));
readfile($file);
}
else
{
# if not IE, give the browser a try
header("Content-Type: multipart/x-mixed-replace; boundary=$sep");
print "--$sep\n";
do {
print "Content-Type: image/jpeg\n\n";
readfile($file);
print "\n--$sep\n";
flush();
$mt = filemtime($file);
do {
sleep (1);
# we won't output the same image twice.
clearstatcache();
} while ($mt == filemtime($file));
} while (1);
}
?>


Make sure there are no blank lines outside the <? ?> in your script. That will cause screwey headers to be sent too soon.
Reference the script in your HTML page as if it was an image:

<IMG SRC="server-push.php" HEIGHT=240 WIDTH=320>

Use this bit of PHP on the page that references the image to compensate for IE's lack of "innovation":

<HEAD>
<?
if (ereg("MSIE",$HTTP_SERVER_VARS["HTTP_USER_AGENT"])) {
echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"4;\">\n";
}
?>
</HEAD>

  培训的第一阶段,学习的是HTML/CSS/JavaScript基础。
冷月葬花魂 该用户已被删除
沙发
发表于 2015-2-4 13:14:41 | 只看该作者
使用 jquery 等js框架的时候,要随时注意浏览器的更新情况,不然很容易发生框架不能使用。
灵魂腐蚀 该用户已被删除
板凳
发表于 2015-2-9 23:15:45 | 只看该作者
不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。
变相怪杰 该用户已被删除
地板
发表于 2015-2-18 15:06:39 | 只看该作者
首先声明:我是一个菜鸟,是一个初学者。学习了一段php后总是感觉自己没有提高,无奈。经过反思我认为我学习过程中存在很多问题,我改变了学习方法后自我感觉有了明显的进步。
小妖女 该用户已被删除
5#
发表于 2015-3-4 11:15:31 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
小魔女 该用户已被删除
6#
发表于 2015-3-11 05:15:43 | 只看该作者
php是动态网站开发的优秀语言,在学习的时候万万不能冒进。在系统的学习前,我认为不应该只是追求实现某种效果,因为即使你复制他人的代码调试成功,实现了你所期望的效果,你也不了解其中的原理。
再见西城 该用户已被删除
7#
 楼主| 发表于 2015-3-20 19:34:04 | 只看该作者
Ps:以上纯属原创,如有雷同,纯属巧合
爱飞 该用户已被删除
8#
发表于 2015-3-24 05:30:55 | 只看该作者
真正的方向了,如果将来要去开发团队,你一定要学好smarty ,phplib这样的模板引擎,
精灵巫婆 该用户已被删除
9#
发表于 2015-4-1 09:11:01 | 只看该作者
写的比较杂,因为我也是个新手,不当至于大家多多指正。
不帅 该用户已被删除
10#
发表于 2015-4-1 17:08:59 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
admin 该用户已被删除
11#
发表于 2015-4-12 16:22:19 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
透明 该用户已被删除
12#
发表于 2015-4-15 20:02:58 | 只看该作者
这些都是最基本最常用功能,我们这些菜鸟在系统学习后,可以先对这些功能深入研究。
莫相离 该用户已被删除
13#
发表于 2015-4-22 10:16:11 | 只看该作者
装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。
蒙在股里 该用户已被删除
14#
发表于 2015-4-28 21:58:49 | 只看该作者
说点我烦的低级错误吧,曾经有次插入mysql的时间 弄了300年结果老报错,其实mysql的时间是有限制的,大概是到203X年  具体的记不清啦,囧。
飘飘悠悠 该用户已被删除
15#
发表于 2015-5-2 00:36:48 | 只看该作者
首推的搜索引擎当然是Google大神,其次我比较喜欢 百度知道。不过搜出来的结果往往都是 大家copy来copy去的,运气的的概率很大。
活着的死人 该用户已被删除
16#
发表于 2015-5-4 05:28:20 | 只看该作者
要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
17#
发表于 2015-5-12 00:23:53 | 只看该作者
最后介绍一个代码出错,但是老找不到错误方法,就是 go to wc (囧),出去换换气没准回来就找到错误啦。
金色的骷髅 该用户已被删除
18#
发表于 2015-6-13 05:41:31 | 只看该作者
开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。
老尸 该用户已被删除
19#
发表于 2015-6-20 21:49:10 | 只看该作者
因为blog这样的可以让你接触更多要学的知识,可以接触用到类,模板,js ,ajax
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-22 13:45

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表