php怎么实现实时接收数据

发布时间:2022-03-14 16:40:09 作者:iii
来源:亿速云 阅读:456

本篇内容主要讲解“php怎么实现实时接收数据”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php怎么实现实时接收数据”吧!

  1.发布订阅的Pub/Sub

  发布订阅(Pub/Sub):目前广泛使用的通信模型,它采用事件作为基本的通信机制,提供大规模系统所要求的松散耦合的交互模式:订阅者(如客户端)以事件订阅的方式表达出它有兴趣接收的一个事件或一类事件;发布者(如服务器)可将订阅者感兴趣的事件随时通知相关订阅者------是不是与设计模式里面的观察者模式一个妈妈生的?

  Redis的Pub/Sub非常非常简单,运行稳定并且快速。支持模式匹配,能够实时订阅与取消频道。比如很多用Pub/Sub构建的实时聊天系统、聊天群发的例子。

  Redis 客户端可以订阅任意数量的频道。

  Redis提供了发布订阅功能,可以用于消息的传输,Redis的发布订阅机制包括三个部分,发布者,订阅者和Channel。

  发布者和订阅者都是Redis客户端,Channel则为Redis服务器端,发布者将消息发送到某个的频道,订阅了这个频道的订阅者就能接收到这条消息。Redis的这种发布订阅机制与基于主题的发布订阅类似,Channel相当于主题。

  2.发布订阅的使用场景

  最经典的应用场景就是微博和公众号,任何粉丝只要关注(订阅)了某一个人的微博或者公众号,该微博或者公众号只有有状态更新,都会将消息推送(发布)到粉丝。

  发布订阅的执行过程是由我们的发布者跟我们的频道去建立关系,然后把这个消息通过长连接方式发送过去。同时这个时候我们还有一个订阅者,我们也需要去订阅我们的内容,如果说我们订阅了,那么当我们的频道收到了某个消息的时候,我们会及时的去给订阅者做到消息的推送。

  那么这里的连接就会涉及到我们的长连接和短连接,他们之间有什么区别呢?

  3.PHP实现实时发布订阅

  subscribe(消息订阅端 sub.php):在终端执行sub.php命令,就会处在监听状态,等待发布者发布消息进行处理。

  $redis=new Redis();

  $res=$redis->pconnect('127.0.0.1', 6379,0);

  $redis->subscribe(array('luke'), 'callback');

  // 回调函数,这里写处理逻辑

  function callback($instance, $channelName, $message) {

  echo $channelName, "==>", $message,PHP_EOL;

  }

  publish(消息发布端 pub.php):

  $redis=new Redis();

  // 第一个参数为redis服务器的ip,第二个为端口

  $res=$redis->connect('127.0.0.1', 6379);

  // luke为发布的频道名称,hello,world为发布的消息

  $res=$redis->publish('luke','hello,world');

  4.redis可以实现发布订阅和消息队列的功能,两者的区别在于:

  1)redis的订阅者可以是多个,且可以同时处理发布上来的消息,如果订阅者不在线(服务没有启动)消息将丢失,消息没有持久化。发布和订阅是一块执行的,缺少一个直接忽略这个消息

  2)消息队列只能有一个客户端来处理,处理完之后消息就被标记或删除,即使服务端没有启动消息也不会丢失

  3)两者的使用场景要根据业务数据的准确度,敏感性决定,比如日志就可以用redis发布订阅来实现,丢失一点也没有关系

到此,相信大家对“php怎么实现实时接收数据”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

推荐阅读:
  1. PHP接收get、post 、json格式数据
  2. php如何接收表单

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php

上一篇:如何使用PHP蜘蛛爬虫框架来爬取数据

下一篇:php文本文档编辑框怎么使用

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》