长连接是什么?

朋友们应该都见过很多在线聊天工具和网页在线聊天的工具。学校内有一种熟悉的功能,如果有人回复你了,网站会马上出现提示,此时你并没有刷新页面;Gmail也有此功能,如果邮箱里收到了新的邮件,网站会马上提醒你,即使你的网页一直未刷新过。说到这里大家肯定不陌生,就是复用一个链接持续不断的进行数据交互。在现下很多互联网业务场景都需要长连接的支持,比如:游戏、聊天、信息推送等等等,这么多类似的功能都离不开长连接。前一章节介绍了php socket通信,本章来介绍一下php socket长连接。

长连接和短链接

短连接一般都是单项请求数据,服务器不能主动把数据“推”想客户端,但有了长连接就好多了,利用后端与前端的技术组合起来,可以实现服务器的“推送信息”功能,如果数据库里面有更新,后端程序可以立即把数据“推送出来”,而不要多次反复请求,多次建立连接,多次断开。

其大概有如下的几种解释:

  1. 所谓长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差;所谓短连接指建立SOCKET连接后发送后接收完数据后马上断开连接,一般银行都使用短连接
  2. 长连接就是指在基于tcp的通讯中,一直保持连接,不管当前是否发送或者接收数据。而短连接就是只有在有数据传输的时候才进行连接,客户-服务器通信/传输数据完毕就关闭连接。
  3. 通信方式
    各网元之间共有两种连接方式:长连接和短连接。所谓长连接,指在一个TCP连接上可以连续发送多个数据包,在TCP连接保持期间,如果没有数据包发送,需 要双方发检测包以维持此连接。短连接是指通信双方有数据交互时,就建立一个TCP连接,数据发送完成后,则断开此TCP连接,即每次TCP连接只完成一对 CMPP消息的发送。
    现阶段,要求ISMG之间必须采用长连接的通信方式,建议SP与ISMG之间采用长连接的通信方式。
  4. 短连接:比如http的,只是连接、请求、关闭,过程时间较短,服务器若是一段时间内没有收到请求即可关闭连接。长连接:有些服务需要长时间连接到服务器,比如CMPP,一般需要自己做在线维持。

实现socket长连接

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

想要玩长连接就需要跟socket打交道,socket的封装自然是少不的了。下面就通过代码来进行socket长连接。

其实例代码如下:

<?

下面来提高下效率:

<?

随着人数的增长,并发的提升,单个进程已经满足不了需求了,现成的就有扩展和库来解决这个事,比如:swoole,workerman等 但是,我们在使用php来开发web的时候,也没有使用webserver相关的库来做开发对不对?咱只是简单的echo而已。这些繁杂的事都交给了nginx或者是apache,是他们义无反顾的顶在前面,让我们可以专心写逻辑。写socket服务不比写web高级,都是打码,都是完成需求,通信那层都是固定的,只不过一个由nginx完成,另一个由自己完成。。可是现在不需要自己完成了,类似nginx+fpm的方案,fooking+fpm=php长连接,gateway用于承载连接,router用于转发消息。

其代码如下所示:

<?

以上内容希望帮助到大家,很多PHPer在进阶的时候总会遇到一些问题和瓶颈,业务代码写多了没有方向感,不知道该从那里入手去提升,对此我整理了一些资料,包括但不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,YII2,Redis,Swoole、Swoft、Kafka、Mysql优化、shell脚本、Docker、微服务、Nginx等多个知识点高级进阶干货需要的可以免费分享给大家,需要

PHP进阶架构师>>>视频、面试文档免费获取​shimo.im

或 者关注咱们下面的知乎专栏

PHP架构师圈子​zhuanlan.zhihu.com

android socket 长连接_php socket如何实现长连接相关推荐

  1. [Golang] 从零開始写Socket Server(3): 对长、短连接的处理策略(模拟心跳)

    通过前两章,我们成功是写出了一套凑合能用的Server和Client,并在二者之间实现了通过协议交流.这么一来,一个简易的socket通讯框架已经初具雏形了,那么我们接下来做的.就是想办法让这个框架更 ...

  2. java nio socket长连接_netty学习实战—实现websocket长连接和socket之间进程通信

    netty学习-实现websocket长连接和socket之间通信 最近正在学习netty,跟着教程写了一个基于WebSocket的网页聊天室,对netty有了一定的了解,现在正好项目使用到长连接,选 ...

  3. 使用SuperSocket打造逾10万长连接的Socket服务

    使用SuperSocket打造逾10万长连接的Socket服务 原文:使用SuperSocket打造逾10万长连接的Socket服务 SuperSocket 是一个轻量级, 跨平台而且可扩展的 .Ne ...

  4. python socket通信 心跳_python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)...

    长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...

  5. python socket通信 心跳_python socket 编程之三:长连接、短连接以及心跳(转药师Aric的文章)-阿里云开发者社区...

    长连接:开启一个socket连接,收发完数据后,不立刻关闭连接,可以多次收发数据包. 短连接:开启一个socket连接,收发完数据后,立刻关闭连接. 心跳:长连接在没有数据通信时,定时发送数据包(心跳 ...

  6. Android客户端,PC服务器,Socket连接所遇到的问题

    这两天在编写 Socket客户端,服务器Demo时的总结: 1.客户端与服务器的形式:Android手机客户端,PC搭建Socket服务器,采用的是Apache-mina开源框架(异步连接框架). 2 ...

  7. 微信 短连接 长连接服务器,Socket,http长连接与短连接

    TCP/IP TCP/IP是个协议组,可分为三个层次:网络层,传输层和应用层. 在网络层有IP协议,ICMP协议,ARP协议,RARP协议和BOOTP协议. 在传输层中有:TCP协议与UDP协议. 在 ...

  8. 即时通讯的业务场景和需求与短连接,长连接,Socket介绍大杂烩

    即时通讯的业务场景和需求 即时通信(Instant Messaging,简称IM)是一个允许两人或多人使用网络实时的传递文字消息.文件.语音与视频交流. 即时通讯技术应用于需要实时收发消息的业务场景. ...

  9. android 分包粘包_Android Socket 发送与接收数据问题处理: 发送后的数据接收到总是粘包...

    先说明一下粘包的概念: 发送时是两个单独的包.两次发送,但接收时两个包连在一起被一次接收到. 在以前 WinCE 下 Socket 编程,确实也要处理粘包的问题,没想到在 Android 下也遇到了. ...

最新文章

  1. 一行代码都不写!Github 博客小白版入门教程
  2. 计算图像的标准差与方差(meanStdDev() 函数)
  3. TensorFlow学习笔记(一):数据操作指南
  4. Java笔试题库之选题题篇【1-70题】
  5. zookeeper学习总结
  6. 理想内插_理想ONE性能测试:6.35秒就能破百,售价只要宝马X5一半
  7. 【SQL】SQL语句多表联合查询
  8. 减少该死的 if else 嵌套
  9. java学习笔记十二
  10. python一到10整数的平方和_零基础学python_10_列表(创建数值列表 )
  11. 【插件发布】JAVA微服务框架,Jeecg-P3-Base-System 1.0.0 插件开源发布
  12. 《C++游戏开发》笔记十三 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法...
  13. 简单的自动化测试脚本
  14. 华为防火墙双线路故障自动切换
  15. 淘宝购物电话错误危急处理
  16. 计算机轴测图绘图实验报告,Auto_CAD实验报告_轴测图.doc
  17. 转:亚熟男 我们该拿你怎么办?
  18. 学习编程语言最好的方法是什么
  19. 【原创】【理论+题型】二次型化标准型 +合同
  20. 一个女人频繁做这些事,真的很爱你

热门文章

  1. Unofficial Windows Binaries for Python Extension Packages
  2. 转载:逻辑思维提升表达
  3. stm32 中bootloader、startup_stm32f10x_md.s的作用
  4. 解救小易——网易笔试
  5. ustc小道消息20211229
  6. 《等离子体所毕业生经验分享会》观后感 2020-07-03
  7. < Android数据存储> 任务二 应用程序数据文件夹里的文件读写
  8. c++求矩阵的秩_线性代数复习(被玩坏的矩阵)
  9. JS 枚举型变量操作
  10. 【CyberSecurityLearning 57】XSS