短衔接
衔接->传输数据->封闭衔接(引荐进修:PHP编程从入门到通晓)
比方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长衔接和短衔接区分的细致内容,更多请关注ki4网别的相干文章!