• 技术文章 >后端开发 >PHP问题

    php中长连接和短连接的区别是什么

    青灯夜游青灯夜游2021-10-11 18:04:23原创136

    php中长连接和短连接的区别:1、短连接是指SOCKET连接后,发送接收完数据后马上断开连接;而长连接是指建立SOCKET连接后,不管是否使用都保持连接,直到一方关闭连接为止。2、与短连接相比,长连接的安全性较差。

    本教程操作环境:windows7系统、PHP7.1版、DELL G3电脑

    短连接

    连接->传输数据->关闭连接

    比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

    具体就是 浏览器client发起并建立TCP连接 -> client发送HttpRequest报文 -> server接收到报文->server handle并发送HttpResponse报文给前端,发送完毕之后立即调用socket.close方法->client接收response报文->client最终会收到server端断开TCP连接的信号->client 端断开TCP连接,具体就是调用close方法。

    也可以这样说:短连接是指SOCKET连接后,发送接收完数据后马上断开连接。

    因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。 这也是HTTP协议无状态的原因之一。

    长连接

    连接->传输数据->保持连接 -> 传输数据-> ...........->直到一方关闭连接,多是客户端关闭连接。

    长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。

    每次我们访问PHP脚本的时候,都是当所有的PHP脚本执行完成后,我们才得到返回结果。如果我们需要一个脚本持续的运行,那么我们就要通过php长连接的方式,来达到运行目的。

    一般php环境为apache+php+linux,但是由于apache对php连接都有时间限制,一般超过这个连接时间apache服务器会自动断掉连接。

    这种情况下比较简单方便的方式就是在php页面中设置set_time_limit(0)(当然也可以在php.ini配置文件中设置,但是这样对整个环境产生影响,毕竟我们并不想对所有连接都可以长时间连接,影响服务性能)

    每个PHP脚本都限制了执行时间,所以我们需要通过 set_time_limit 来设置一个脚本的执行时间为无限长,然后使用 flush() 和 ob_flush() 来清除服务器缓冲区,随时输出脚本的返回值。

    <?php
    header("Content-Type: text/plain");
    set_time_limit(0);
    while (true) {// 持续执行的脚本  flush();
    	ob_flush();
    	sleep(5);
    }
    ?>

    当我们执行后,每隔5秒钟,我们会执行一次,通过这一方法,我们可以完成很多功能,例如后台监控程序,定时执行功能,日志分析,数据整理等耗时的操作。

    推荐学习:《PHP视频教程

    以上就是php中长连接和短连接的区别是什么的详细内容,更多请关注php中文网其它相关文章!

    声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理
    专题推荐:php 长连接 短连接
    上一篇:php怎么过滤字符串只获取数字 下一篇:php怎么计算指定日期是一年中的第几周
    线上培训班

    相关文章推荐

    • php怎么将数字转换成二进制• php全局变量在函数内不能使用怎么办• php rmdir()怎么删除非空目录• php怎么过滤字符串只获取数字• 聊聊PHP中如果让字符串直接解析函数(技巧分享)

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网