文字

MongoClient::close

(PECL mongo >=1.3.0)

MongoClient::close关闭连接

说明

public bool MongoClient::close ([ boolean|string $connection ] )

MongoClient::close() 方法强制关闭一个数据库连接,哪怕使用的是持久连接。 在正常情况下,你绝不需要这么做。

参数

connection

如果没有指定 connection,或者是 FALSE ,将会选择关闭写作操作的连接。 如果配置为单节点,将会关闭整个连接,但是如果你连接到一个集群, close() 会仅仅关闭 primary 节点的连接。

如果 connection 是 TRUE ,连接管理器将会关闭所有由它管理的连接。 这也会包括创建对象时所引用的连接字符串之外的连接。

如果 connection 是一个字符串参数,它将仅仅关闭由该 hash 标识的连接。 Hash 是调用 MongoClient::getConnections() 所返回,能够表示一个连接。

返回值

返回连接是否成功关闭。

范例

Example #1 MongoClient::close() 例子

这个例子演示了如何选择性地仅关闭备份节点的所有连接。

<?php
// 连接到集群
$a  = new  MongoClient ( "mongodb://whisky:13000/?replicaset=seta" );

$connections  $a -> getConnections ();

foreach ( 
$connections  as  $con  )
{
    
// 遍历所有连接,如果类型是 "SECONDARY" 则关闭连接
    
if (  $con [ 'connection' ][ 'connection_type_desc' ] ==  "SECONDARY"  )
    {
        echo 
"Closing ' { $con [ 'hash' ]} ': " ;
        
$closed  $a -> close $con [ 'hash' ] );
        echo 
$closed  "ok"  "failed" "\n" ;
    }
}
?>

以上例程会输出:

Closing 'whisky:13001;X;4948': ok

更新日志

版本 说明
1.3.0

在 1.3.0 版本中,为这个函数添加了 connection 参数。 在此之前,直邮写入连接才会被这个方法关闭。

1.2.0

在版本 1.2.0 之前,这个驱动默认不会使用持久连接,所有连接会在作用域结束时关闭。 由于版本 1.2.0 情况不再如此,所以调用 close 会是一个坏主意,在服务器有较高负载时可能会造成更高的压力。

参见

  • MongoClient::getConnections() - 返回所有已打开连接的信息
上一篇: 下一篇: