Codeigniter를 사용하고 색인 페이지를 새로 고칠 때마다 응용 프로그램이 새 연결을 엽니 다. 내 연결 클래스를 Singleton하려고했지만 새로운 연결을 계속 열어. Mongolib.phpCodeigniter와 MongoDb는 다중 연결을 열지 않습니다.
class Mongolib extends MongoClient
{
var $db;
public function __construct()
{
$ci =& get_instance();
$ci->load->config('mongo');
$server = $ci->config->item('mongo_server');
$dbname = $ci->config->item('mongo_dbname');
if ($server)
{
parent::__construct($server);
}
$this->db = $this->$dbname;
}
}
난 싱글을 시도하는 경우 :
(THIRD_PARTY 폴더)class MongoApi {
static protected $_instance;
protected $db = null;
final protected function __construct() {
$m = new MongoClient();
$this->db = $m->selectDB("mydb");
}
static public function getInstance() {
if (!(self::$_instance instanceof self)) {
self::$_instance = new self();
}
return self::$_instance;
}
public function getConnection() {
return $this->db;
}
final protected function __clone() { }
}
Mongolib.php (라이브러리
MongoDB.php 폴더)
require MY_PATH . '/application/third_party/MongoDB.php';
class Mongolib
{
var $db;
public function __construct()
{
$this->db = MongoApi::getInstance()->getConnection();
}
}
난 내 페이지를 새로 고침하고 새 연결을 엽니 다) db.serverStatus를 (실행 ...
"connections" : {
"current" : 4,
"available" : 2044,
"totalCreated" : NumberLong(7)
},
몽고 드라이브 버전 - 1.6.0-dev에
mongo 드라이버 1.6.0을 사용하고 있습니다. "_1.x.xx (1.3.x 이후 버전이 아님)를 사용하는 경우 pooling_에 대한 자세한 정보는 MongoPool을 참조하십시오."(http://php.net/manual/en/mongo.connecting.persistent.php).그리고 MongoPool 클래스에서 "_Warning 드라이버의 현재 (1.3.0+) 릴리스는 더 이상 풀링을 구현하지 않으므로이 클래스와 메서드는 더 이상 사용되지 않으므로 사용해서는 안됩니다." (http://php.net/manual/en/class.mongopool.php) –