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

教程操作环境: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秒钟,我们会执行一次,通过这一方法,我们可以完成很多功能,例如后台监控程序,定时执行功能,日志分析,数据整理等耗时的操作。

--结束END--

本文标题: php中长连接和短连接的区别是什么

本文链接: https://www.lsjlt.com/news/269.html (转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢

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

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

    php ===和==的区别:1、在PHP中===表示全等运算符,而==表示等于运算符;2、如果等于运算符两边的值相等,则返回true,而如果全等运算符两边的值相等但类型不等,则返回false。
    阅读数:622 php
  • php和java区别是什么

    php和java区别:1.java是一种静态编程语言,而php是动态的。2.php适合于快速开发,中小型应用系统,而java适合于开发大型的应用系统。3.Java通过JDBC来访问数据库,访问数据库的接口比较统一,而php对于不同的数据库采
    阅读数:223 Java PHP
  • php跟css的区别是什么

    php和css的区别:1、PHP属于服务器语言,而css属于客户端语言;2、php是用来处理逻辑层的,而css是用来做网页的表现层的;3、php可以动态生成网页,而css需要配合各种语言动态的对网页元素进行格式化。
    阅读数:688 PHP&&css
  • php与ruby的区别是什么

    php与ruby的区别:1、ruby中函数的调用可以把括号省略,而PHP中不能把括号省略;2、ruby中提供proc、block,而PHP中没有提供;3、ruby中没有接口,也没有抽象类,而PHP中有接口,也有抽象类。
    阅读数:812 php
  • web与php的区别是什么

    web与php的区别:1、php主要用于后端处理数据和操作数据增删改查,而web前端用于把界面和数据显示给用户;2、php在服务器运行和解释,web前端主要用浏览器解决;3、php要考虑效率和安全性,web前端则要更注重可操作性和美观。
    阅读数:914 PHP
  • wordpress与PHP的区别是什么

    wordpress与PHP的区别:PHP是一门在服务器端执行的脚本语言,一种编程语言;而WordPress是一款个人博客系统,是使用PHP语言开发的博客平台,功能都是现成的直接使用。
    阅读数:890 wordpress PHP
  • php与vb的区别是什么

    php与vb的区别:1、PHP即超文本预处理器,是网页的代码语言,在服务器端执行的脚本语言,常用于编写网页;2、VB是Microsoft公司开发的一种通用的基于对象的程序设计语言,常用于做应用程序。
    阅读数:555 PHP
  • vuejs和php的区别是什么

    这篇文章将为大家详细讲解有关vuejs和php的区别是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。vuejs和php的区别:1、Vue是一套JavaScript框架;而PHP是一种脚本
    阅读数:443 vuejs php
  • php sizeof与count的区别是什么

    php sizeof()和count()之间没有区别。sizeof()函数是count()函数的别名,也就是说sizeof()函数的功能及使用方法与count()函数是完全相同的,都可以用来计算数组的长度。
    阅读数:405 php sizeof count
  • php false跟0的区别是什么

    php false跟0的区别:1、false是boolean值,而0是数值0;2、在PHP中false是以值为0存储的,但是false和0的类型不一样。
    阅读数:449 php false 0
  • php形参和实参的区别是什么

    区别:1、形参是定义函数时函数名后面括号内的若干个参数,实参是调用函数时函数名后面括号中的若干个参数;2、形参是不具有实际意义的参数,而实参是具有实际数据意义的参数。
    阅读数:886 php 形参 实参
  • php打印输出的区别是什么

    区别:1、print()在打印的时候,只能打印一个变量,而echo可以打印多个变量;2、“print_r()”会将数组或者对象进行格式化后并打印出来,而“var_dump()”不仅会格式化数组或对象,而且会将类型显示出来。
    阅读数:560 php
  • php中变量与常量的区别是什么

    区别:1、常量只能用define()函数或const关键字定义;而变量没有定义的关键字或函数,在赋值的时候被定义。2、变量名前用“$”修饰,常量名则不需要。3、变量值可以改变,常量值不可以。4、变量有全局和局部作用域,而常量只有全局作用域。
    阅读数:616 php 变量 常量
  • php中恒等与等于的区别是什么

    区别:1、恒等使用“===”运算符进行计算,而等于使用“==”运算符进行计算;2、等于运算只测试左边变量是否与右边变量具有相同的值,而恒等运算不仅测试值是否相同,还测试数据类型是否相同。
    阅读数:435 php 恒等 等于 === ==
  • php中float和double的区别是什么

    在PHP中,float和double没有区别。浮点型在PHP中也叫浮点数float、双精度数double或实数real,float、double或real是相同的数据类型,可以使用同一种语法定义。
    阅读数:408 PHP
  • php中echo和return的区别是什么

    区别:1、echo是输出字符串到浏览器,而return是终止后面代码的执行并返回一个值;2、echo主要用于php对浏览器的输出,而return主要用于处理函数的返回值。
    阅读数:555 php echo return
  • php中put和post的区别是什么

    区别:1、PUT方法没有POST方法使用广泛,但PUT方法却是向服务器上传文件最有效率的方法;2、上传过程和上传效果不同;3、POST请求的URI表示处理该封闭实体的资源,PUT请求中的URI表示请求中封闭的实体。
    阅读数:467 php put post
  • php中public和private的区别是什么

    区别:1、如果类成员声明为public,那么它可以在任何地方访问;而如果类成员声明为private,则它只能由定义该成员的类访问。2、public是公共类型,权限是最大的,可内部调用,实例调用等;private是私有类型,只有在本类中使用。
    阅读数:512 php public private
  • php中get和set的区别是什么

    php中get和set的区别:“__get()”方法是用于获取私有成员属性值的,返回的结果是获取到的属性值,而“__set()”方法是用于设置私有成员属性值的,该方法没有返回值。
    阅读数:698 PHP