为什么我的redis设置长连接无效?

查看超时设置

config get timeout

1) "timeout"
2) "0"

查看最大连接数(我就用了2个连接)

config get maxclients

1) "maxclients"
2) "10000"

代码这样写的

$redis = new Redis();
$redis->pconnect('192.168.1.20', 6379);
while(1){
    $redis->subscribe(array($mac), function($redis, $channel, $message){
        /**/
    });
}

运行一段时间就不行了,我是php-cli模式

阅读 10.9k
2 个回答

连接有两端,分别是php和redis服务器,任何一方主动断开,连接就不完整了,无法正常交互。
你设置的是redis 服务端主动断开连接的时间。 还需要设置php端的时间。
ini_set('default_socket_timeout', 86400); //php socket超时时间设置为86400秒。

你的redis长连接没有问题,但是php脚本默认最大执行时间为300秒,就结束了
所以在你的php脚本的最前面写上防止超时的方法

<?
set_time_limit(0);//设置为0,则脚本会一直执行下去,除非你退出...

望采纳

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进