【文章最强指标源码】【xmlhttp取网页源码】【下载网页的源码】redis大牛源码_redis 源码

2024-11-28 09:48:04 来源:宜章源码开发 分类:探索

1.java subscribe监听超时怎么解决

redis大牛源码_redis 牛源源码

java subscribe监听超时怎么解决

       问题描述

       redis提供了pub/sub功能,但在使用phpredis的源码subscribe时发现这样一个问题,代码如下(sub.php):

       <?牛源php/*监听demo频道,打印收到的源码文章最强指标源码信息*/function process($redis, $chan, $msg){

       var_dump($msg);

       }$redis = new Redis();$res = $redis->connect('.0.0.1', '');$redis->subscribe(array('demo'), 'process');

       代码运行后,发现如果在一段时间内未收到来自demo频道的牛源消息,则会报如下错误:

       PHP Fatal error:  Uncaught exception 'RedisException' with message 'read error on connection' in sub.php:Stack trace:#0 /search/ballqiu/sub.php(): Redis->subscribe(Array,源码xmlhttp取网页源码 'process')#1 { main}

       thrown in sub.php on line

       原因分析

       为了查找原因,我们使用strace对代码进行了跟踪:

       strace php sub.php1

       截取部分重要输出如下:

       //连接redis

       connect(3,牛源 { sa_family=AF_INET, sin_port=htons(), sin_addr=inet_addr(".0.0.1")}, ) = -1 EINPROGRESS (Operation now in progress)

       //发送subscribe命令

       sendto(3, "subscribe  demo\r\n", , MSG_DONTWAIT, NULL, 0) = //收到响应

       recvfrom(3, "*3\r\n$9\r\nsubscribe\r\n$4\r\ndemo\r\n:1\r"..., , MSG_DONTWAIT, NULL, NULL) = poll([{ fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)

       //套机字超时时间设为s

       poll([{ fd=3, events=POLLIN|POLLERR|POLLHUP}], 1, ) = 0 (Timeout)

       //等待超时,关闭连接

       close(3)                                = 0//输出错误信息

       write(2,源码 "PHP Fatal error:  Uncaught excep"..., PHP Fatal error:  Uncaught exception 'RedisException' with message 'read error on connection'

       可见报错的本质是poll设置接收超时所致,从starce结果我们知道这个超时默认是牛源s。

       解决

       我们有两种方法改变超时 

       - 方法1 

       在代码起始处设置

       ini_set('default_socket_timeout',源码 -1);1

       方法2 

       在redis connect后执行

$redis->setOption(Redis::OPT_READ_TIMEOUT, -1);1

       两种方法中的-1均表示永不超时,你也可以将超时设置为自己希望的牛源时间。 

       无论使用哪种方法,源码再次strace,牛源下载网页的源码 你会发现poll的源码超时被设为了-1。

recvfrom(3,牛源 "*3\r\n$9\r\nsubscribe\r\n$4\r\ndemo\r\n:1\r"..., , 0, NULL, NULL) = poll([{ fd=3, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)

       //超时被设为-1, 即永不超时

       poll([{ fd=3,dnf脱机辅助源码 events=POLLIN|POLLERR|POLLHUP}], 1, -

       个人比较推荐方法2,它只影响到redis本身。而方法1会对其它方法产生影响,比如 

       file_get_contents等。java ee商城源码

       总结

       使用phpredis的subscribe时,默认内没有收到消息,sub端就会因超时异常退出。可以自行设置延长超时时间或永不超时。

更多资讯请点击:探索

热门资讯

非农指标源码_非农指标是啥意思

2024-11-28 09:341598人浏览

src源码

2024-11-28 09:172399人浏览

roster源码

2024-11-28 09:15739人浏览

索要源码_索要源代码

2024-11-28 08:581665人浏览

opencv源码路径

2024-11-28 08:312787人浏览

vsc源码

2024-11-28 07:551410人浏览

推荐资讯

浙江绍兴开展打击擅自标注“有机”产品专项执法行动

为进一步强化有机产品认证监管,提高有机产品认证公信力,规范有机产品市场秩序,近日,浙江省绍兴市上虞区市场监管局开展打击擅自标注“有机”产品专项执法行动。执法人员依法依规对辖区内包括大润发超市、海底捞在

castep源码

1.常用的计算软件大集合常用的计算软件大集合 VASP 官方网址:vasp.at VASP全称Vienna Ab-initio Simulation Package,是维也纳大学Hafn

javablog源码

1.javabean按功能分类(javalibrary按分类)2.为什么我的java源代码是乱码?javabean按功能分类(javalibrary按分类) Javabean有那些分类及其作用?