PHP 中使用 connect 和 pconnect 连接 Redis ,在手动 close 后,为什么都无法关闭连接?

PHP 中使用 connectpconnect 连接 Redis ,在手动 close 后,为什么都无法关闭连接?

在手动 close 后,仍然可以使用 Redis 实例操作 Redis,请问这是什么原因?

网上的文章,例如:

http://starsea.github.io/post...

https://blog.csdn.net/qmhball...

等等文章,都说在 close 后,继续操作 redis 就会报错,

但是我自己测试后发现

无论是在 Windows 的环境下,还是 Linux 的环境下,手动 close 后仍然可以继续使用 Redis 的实例,操作数据。

例如类似如下代码:

网上的文章,运行后会进入 catch 中,但是我的环境能够正常输出,不会进入 catch

<?php
$rds = new Redis();
try {
    $ret = $rds->pconnect("127.0.0.1", 6379);
    if ($ret == false) {
        echo "Connect return false";
        exit;
    }

    var_dump($rds->get('k1'));
    $rds->close();
    var_dump($rds->get("k2"));
} catch (Exception $e) {
    var_dump ($e);
}

在我的环境中运行上面的 php 文件,会输出如下图中的结果:

clipboard.png

请问这是什么原因?怎么解释?

我在 Laravel 5.6 的框架中也测试了,结果也是同样的。

我的 Redis 版本是 4.0.11

clipboard.png

我的 php-redis 扩展的版本是 4.2.0

clipboard.png

之后把扩展升级到了最新版 5.0.2,结果还是一样,不会进入 catch

阅读 5.2k
3 个回答

close
Description: Disconnects from the Redis instance.

Note: Closing a persistent connection requires PhpRedis >= 4.2.0.

Parameters
None.

Return value
BOOL: TRUE on success, FALSE on failure.

看懂了吧?

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