实现PHP的短连接

2023-12-20    分类: 网站建设

假如你去蛋糕店定做一个蛋糕,你会呆着看糕点师傅做完吗?正常都是先预订,然后去做别的事情,过一段时间再去取吧?或者蛋糕店有送货上门的服务,你定了蛋糕后留下地址它会给你送到。总之,正常人是不会呆着等的。那么我们给服务器发送一个数据让它“做蛋糕”为什么要等呢?糕点师被别人看着做事情当然会比平时自己完成的时候更有压力。服务器也一样,把请求留在服务器等服务器等待服务器也一样会感觉到压力。而且请求本身可以做别的事情,为什么非要吃饱撑着看别人做蛋糕呢?

为了不让客户端请求在服务器瞎等,我们就在程序中引入了短连接的概念。说到短连接,那和它相对的就是长连接,这在之前的文章中有说过,这是一种Web通信技术。短连接也一样,通常是用做Web通信的。除了长连接和短连接之外,我们平时用的连接是不长不短的普通连接,在这里做下区分别搞混了。

通常PHP会把所有的代码都执行完才断开HTTP连接,这当然不行。如果PHP页面处理数据需要很长时间,我们当然要先把请求断开再处理数据。现在有一个PHP代码,执行需要5秒,5秒后会把用户发送过来的数据写入一个文件中。我们要在客户端的数据发送成功时马上断开,别让它等这5秒。

//突破PHP运行时限 set_time_limit(0); //无视请求断开 ignore_user_abort(); //发送HTTP成功状态码 header('HTTP/1.1 200 OK'); //欺骗请求说“返回的数据是0字节” header('Content-Length:0'); //威胁请求说“返回完成就自觉点断开” header('Connection:Close'); //假装输出数据,让请求觉得数据已经输出了 flush();

//接下来是蛋糕师傅的工作了 sleep(5);//反正客户走了,先睡一觉 //醒来再做蛋糕 file_put_contents('Cake.txt',$_GET['data']);

看吧,我们使用了各种手段,软硬兼施才让请求自己断开的。不过这已经够了,这就是我们要的结果。但是这样的短连接也带来了一个问题,我想大家都感受到了,就是数据返回的问题。现在是不去傻傻的等糕点师做蛋糕了,但是蛋糕做完了总得拿吧?拿蛋糕又是一件麻烦的事情,不过现在都流行送货上门不是吗?为了避免悲剧的发生,我们要来创造戏剧。看看20世纪的美国搞笑喜剧片吧,喜剧演员总是一胖一瘦一高一矮成对出现的。这样的组合总是让人忍俊不禁。所以短连接最好的搭档就是长连接了,长连接的特长就是“送外卖”。由于它一直和客户端保持通信,所以只要服务器做完“蛋糕”就可以委托长连接给短连接留下的地址(就是回调函数或者业务ID什么的)送去。这样,就可以构造一个很不错的“蛋糕式Web通信系统”。

这篇文章要说的就是这么多,上面提到的长连接其实换成其它Comet方法也可以,比如长轮询什么的。反正Comet方法基本都是“长”的,和这个短连接一起使用必定是喜剧啊。

文章题目:实现PHP的短连接
网站网址:/news8/309458.html

成都网站建设公司_创新互联,为您提供面包屑导航外贸网站建设网站营销定制网站企业建站软件开发

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

手机网站建设