首页 >> 读书频道 >> 电脑 >> SERVER PUSH的具体实现
 
· 第6章 结构完整的XML
· 第5章 属性、空标记和X
· 第5章 属性、空标记和X
· 第5章 属性、空标记和X
· 模板,PHPLIB处理方
· 第5章 属性、空标记和X
· 第5章 属性、空标记和X
· 模板,PHPLIB处理方
· 使用PHP的错误处理
· 第5章 属性、空标记和X
· PHP中如何增加一个系统
· Linux Apache
 
· 电视剧《刁蛮公主》下载和
· 美容养颜手册
· 加油金顺剧情分集介绍完整
· 红楼梦:120回全本[清
· 素质教育在美国
· 全唐诗卷四十六
· 韩剧《布拉格恋人》剧情介
· 夜航船[作者:明·张岱]
· 局外人[作者:韩·可爱淘
· 现场流行病学
· 源氏物语[日本:紫式部]
· 武林寓言故事
 
· (出租)中动商场部分及写
· (出租)中动动漫基地&#
· 喜剧学院
· 《善德女王》剧情介绍
· 魔女18号 剧情
· 丑女无敌剧情介绍
· 魔女幼熙剧情介绍
· 龙游天下剧情介绍
· 震撼世界的七日剧情介绍
· 静静的白桦林剧情介绍
· 心情日记—老公今天我想对
· 旗舰剧情介绍
欢迎来到月影社区!如果您觉得这里不错,请推荐给您的朋友们。月影社区:http://wf66.com/

SERVER PUSH的具体实现


查看有无更新版本

关键字:PHP 2006-9-17

 

SERVER PUSH的具体实现

拙作“推”向更快发表后,笔者收到了很多朋友的来信,希望能了解更多的

关于 SERVER PUSH的技术资料,说实话对这一新技术笔者也不是太了解,但本着

知无不言的思想,在这里根据笔者的实际使用情况作一些详细的介绍,希望给那

些对 SERVER PUSH有兴趣的朋友一点点的帮助和参考。也希望能借此抛砖引玉,

求得高手的不吝指教。

“推”由于篇幅的原因,只对 SERVER PUSH作了一般的介绍,下面我们来看

看SERVER PUSH的具体实现过程:
一、作业系统:
目前 SERVER PUSH还不能在WIN9X上实现,至少是我自己还没有在WIN9X作为

主机上实现过这一功能。经笔者试验成功的作业系统有:WINNT4.0,UNIX,LINUX,

FREEBSD,以LINUX支持最好。因为我使用的LINUX都是最新的版本,可以方便地

编译最新的功能模块。当然还有其它的作业系统也能很好地支持 SERVER PUSH功

能,但笔者限于条件没有测试过。
二、WWW服务器:
其实目前除了IIS和APACHE这两个WWW服务器,你没有更好的选择,值得庆辛

的是它们都能很好地支持 SERVER PUSH,当然你应该选择它们的最新版。别的那

些小孩子过家家那样的WWW服务器就不用试了。在这里笔者极力推荐在LINUX上安

装APACHE,以便能自由编译功能模块,这样可以充分使用SERVER PUSH、FASTCGI

E-CGI、PHP等新的扩展功能。
三、脚本支持:
虽然 SERVER PUSH可以用更多的脚本程序来编写,但笔者强烈推荐用PERL或

C语言来写CGI脚本,因为PERL已经是CGI脚本程序事实上的标准。而且在PERL5中

已经可以直接调用C子程序而不需要任何声明。不管你用什么语言来写CGI脚本,

解释器中应该有CGI.PM模块,笔者试用的版本是 5.004,这一模块的更新版大家

可以从网上下载,找不到?用搜索引擎输入CGI.PM就行了,要多少个都有。
好了,有了上面的工具,下面我们就来写一个 SERVER PUSH程序来说明它的

实现过程:
#!/usr/bin/perl
use CGI qw/:push -nph/;
$| = 1;
print multipart_init(-boundary=>'--boundary');
while (1) {
print multipart_start(-type=>'text/plain'),
"The current time is ",scalar(localtime),"\n",
multipart_end;
sleep 1;
}
use CGI qw/:push -nph/;这一行告诉CGI解释程序,调用支持SERVER PUSH

的功能模块(CGI.PM),在这个模块中预先定义了三个涵数:multipart_init()、

multipart_start()和multipart_end,只要在程序中有use CGI qw/:push -nph/

声明。就可以直接使用这三个涵数。
multipart_init()涵数的作用是声明了一个文档类型,就象普通的CGI程序

中的“Content-Type: text/html”声明,告诉服务器下面传送的是HTML文档,

而multipart_init()这一涵数声明的文件类型却是实现SERVER PUSH最根本的方

法类型:Content-Type: multipart/x-mixed-replace; boundary='--boundary'

如果你对HTTP的MIME类型有详细的了解,你就知道multipart类型是一种复合类

型,它的子类型是mixed,子类型的X参数大家可以参看详细的MIME类型说明,这

里最关键的是replace方法,它不停地用新接收的数据更新旧的数据。这,就是

SERVER PUSH最大的技术内涵。boundary只是一个边界值,告诉浏览器从这儿开

始,使用SERVER PUSH方法了。其实你完全可以这样理解,只要在脚本程序中声

明了multipart/x-mixed-replace; boundary='--boundary'这样一个文档类型,

服务器就和客户机建立了一个特别的连结。服务器就不断地把客户机请求的数据

源源不断地推向了客户机。而传统的CLIENT PULL方法是:1、CLIENT和SERVER建

立连结。2、CLIENT发送请求。3、SERVER响应请求。4、SERVER断开连结以响应

下一请求。通过这两种方法的比较大家可以看出SERVER PUSH优点主要在于服务

器和客户机之间这种不间断的连结方式。使得它不需要采用CLIENT PULL的

SERVER PUSH的具体实现

[ 1 ]
SERVER PUSH的具体实现 num

打印本页 关闭

关于我们版权声明本站导航友情连结作品演示 TOP↑