PHP-Redis实现服务器推技术

有一个场景,web站点有一个微信登录的功能,我们都知道登录流程如下,简单画了一下。。


PHP-Redis实现服务器推技术_第1张图片

常见的做法是短链接,二维码显示之后,定时任务每秒执行一次,也即重复a和b两部

这里使用一种方法,利用redis的发布订阅机制实现服务器推技术,也即二维码显示之后,立马发起请求,web服务器拿到请求之后向redis订阅一个信息,这里就用二维码的标识作为订阅的标识,可以根据场景设置好订阅的超时时间,且配合前后端超时时再次发起请求。当用户扫描微信二维码之后,此时微信服务器会通知我们的服务器,并把相关参数传过来,我们就可以做处理。告诉浏览器哪个二维码被用户扫过。。思路很清晰

下面废话不多说,先模糊这种场景,代码如下

sub.php脚本

$redis = new Redis();

$redis->connect('localhost',6379);

$redis->auth("1234567890");

//相关操作

$channel = "yybbll";  // 比如微信二维码的标识

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

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

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

exit;

}

下面就可以到redis的客户端shell操作

只需写入发布指令

publish yybbll "Redis is a great caching technique"

sub.php脚本需要先运行,后执行发布指令,则脚本输出Redis is a great caching technique


其实微信登录与这个原理是一样的。希望有帮助,一起学习。。。

你可能感兴趣的:(PHP-Redis实现服务器推技术)