简单使用php+redis实现队列消息推送

来源:赵克立博客 分类: PHP 标签:NoSQLRedis发布时间:2019-05-16 15:20:05最后更新:2019-05-16 15:22:37浏览:154
版权声明:
本文为博主原创文章,转载请声明原文链接...谢谢。o_0。
温馨提示:
技术类文章有它的时效性,请留意文章更新时间以及软件的版本
更新时间:
2019-05-16 15:22:37

实现原理

消息推送实现方法php+redis,压入一个消息,然后服务器自动提取出来发送出去,redis有个列表结构可以实现这个功能,重要的是它有个从列表中取数据的方法是可以阻塞(超时)获取的,如果列表中没有消息则可以等待,实现代码如下

压入消息

$redis = new redis();
$redis->connect('127.0.0.1', 6379) or die('connect error!');
$redis->select(8);
$redis->lpush('msglist', rand(1000, 9999));

服务器取出并通知

ini_set('default_socket_timeout', -1);
$redis = new redis();
$redis->pconnect('127.0.0.1', 6379) or die('connect error!');
$redis->select(8);
while (true) {
    var_dump($redis->blpop('msglist', 100));
}

注意上面服务器连接用的是长链接,并且设置啦socket的超时时间为永不超时,效果如下

image.png


微信号:kelicom QQ群:215861553 紧急求助须知
点击更换验证码
Win32/PHP/JS/Android/Python