redis-pub-发布--sub-订阅-php关于redis订阅的疑问
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了redis-pub-发布--sub-订阅-php关于redis订阅的疑问,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2956字,纯文字阅读大概需要5分钟。
内容图文
一.最近在研究redis的pub/sub(发布订阅功能),使用phpredis提供的接口来操作数据。目前疑问:
1.怎么设置,能够解决redis subscribe的timeout限制?
redis.conf配置里的 timeout为0
我的redis版本:
Redis server v=3.0.4 sha=00000000:0 malloc=libc bits=64 build=ee774adfcab9032f
我的php版本:
PHP 5.5.30 (cli) (built: Oct 3 2015 23:46:56)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
1.1在网上找到的答案,有说设置php.ini的:
default_socket_time = -1
但是我这测试不成功,直接就报:
redis server went away
1.2目前是参考的这个链接,加上了这个配置:
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
本地测试是一直在连接状态。
2.订阅端怎么保证一直运行(keep running),来做到实时订阅到消息?
是不是只要redis的sub没有超时,这个php脚本就会一直运行下去呢?
3.有的文章里说redis的subscribe是阻塞模式,有的说不是,到底是不是呢,阻塞模式是个什么概念?
我目前的脚本如下,本地测试是在一直运行的,但是不知道到线上后会不会有什么问题。
二.订阅功能的脚本为subscribe.php
//subscribe.php
function f($redis, $chan, $msg) {
switch($chan) {
case 'chan-1':
print "get $msg from $chan\n";
break;
case 'chan-2':
print "get $msg FROM $chan\n";
break;
case 'chan-3':
break;
}
}
ini_set('default_socket_timeout', -1);
$redis = new Redis();
$redis->pconnect('127.0.0.1',6379);
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
$redis->subscribe(array('chan-1', 'chan-2', 'chan-3'), 'f');
print "\n";
三.执行脚本:
php subscribe.php
求高人指点!
回复内容:
一.最近在研究redis的pub/sub(发布订阅功能),使用phpredis提供的接口来操作数据。
目前疑问:
1.怎么设置,能够解决redis subscribe的timeout限制?
redis.conf配置里的 timeout为0
我的redis版本:
Redis server v=3.0.4 sha=00000000:0 malloc=libc bits=64 build=ee774adfcab9032f
我的php版本:
PHP 5.5.30 (cli) (built: Oct 3 2015 23:46:56)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans
1.1在网上找到的答案,有说设置php.ini的:
default_socket_time = -1
但是我这测试不成功,直接就报:
redis server went away
1.2目前是参考的这个链接,加上了这个配置:
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
本地测试是一直在连接状态。
2.订阅端怎么保证一直运行(keep running),来做到实时订阅到消息?
是不是只要redis的sub没有超时,这个php脚本就会一直运行下去呢?
3.有的文章里说redis的subscribe是阻塞模式,有的说不是,到底是不是呢,阻塞模式是个什么概念?
我目前的脚本如下,本地测试是在一直运行的,但是不知道到线上后会不会有什么问题。
二.订阅功能的脚本为subscribe.php
//subscribe.php
function f($redis, $chan, $msg) {
switch($chan) {
case 'chan-1':
print "get $msg from $chan\n";
break;
case 'chan-2':
print "get $msg FROM $chan\n";
break;
case 'chan-3':
break;
}
}
ini_set('default_socket_timeout', -1);
$redis = new Redis();
$redis->pconnect('127.0.0.1',6379);
$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);
$redis->subscribe(array('chan-1', 'chan-2', 'chan-3'), 'f');
print "\n";
三.执行脚本:
php subscribe.php
求高人指点!
内容总结
以上是互联网集市为您收集整理的redis-pub-发布--sub-订阅-php关于redis订阅的疑问全部内容,希望文章能够帮你解决redis-pub-发布--sub-订阅-php关于redis订阅的疑问所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。