tencent cloud

文档反馈

PHP 重连示例

最后更新时间:2024-01-12 11:04:32

    说明

    云数据库 MongoDB 提供的不是简单的 mongod 访问,给到用户访问的是一个负载均衡 IP,此 IP 后面是连接到一系列类似 mongos 一样存在的路由接入层。 客户端驱动会透过负载均衡 IP 与接入机建立一个长连接,当此连接处于长期间活跃状态时,我们不会对其做任何干预,但是当长连接闲置时间超过1天时(此时间会随着版本优化而调整),路由接入层会剔除该连接。 一般来说,客户端驱动会实现一个自动重连的过程,但是也有部分语言的驱动并没有实现。对于没有实现自动重连的语言驱动,当用户使用一个已经被剔除的连接来尝试与云数据库 MongoDB 通信时可能会得到 “Remote server has closed the connection” 之类的错误信息,所以需手动进行重连,本文给出一个 PHP 重连的 demo。

    基于 php mongo 驱动的重连实现

    <?php
    
    function getConnection() {
    $connection = false;
    $uri = 'mongodb://rwuser:1234567a@10.66.148.142:27017/admin?authMechanism=MONGODB-CR';
    $maxRetries = 5;
    for( $counts = 1; $counts <= $maxRetries; $counts++ ) {
    try {
    $connection = new MongoClient($uri);
    } catch( Exception $e ) {
    // 或者 根据需要使用下面的catch代码行,注意那一个“\\”,某些框架使用命名空间时需要用到。
    // } catch( \\Exception $e ) {
    continue;
    }
    break;
    }
    return $connection;
    }
    
    $connection = getConnection();
    
    if($connection) {
    $db = $connection->testdb;
    $collection = $db->testcollection;
    
    $one = $collection->findOne();
    
    var_dump($one);
    }
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持