我有一个用 PHP 开发的应用程序,使用 MongoDB 来攻击数据库。我的问题是,在某些情况下,进行查询需要很长时间,并且会抛出以下错误: 可捕获的 fatal error :传递给 MongoCollection::__construct() 的参数 1 必须是 MongoDB 的一个实例,null given in..
即使我打开两个相同的浏览器,如果我在每个浏览器中访问应用程序,直到没有一个浏览器不会结束查询,另一个不会开始.. 为什么不是并发?..
我使用 MongoDB 2.6.5、PHP 5.3.3-7 和 PHP MongoDB 驱动程序 1.6.8。
示例代码:
//Function call from Application
<php>
//Conectamos con la BBDD
$db = connectBbdd("modelo");
$mongoNci = $_SESSION["sesion_nci"];
$collection = new MongoCollection($db, 'users');
$js = "function() {
return this.Nci == '$mongoNci';
}";
$cursor = $collection->find(array('$where' => $js));
$array = iterator_to_array($cursor);
</php>
<php>
function connectBbdd($dbname){
Mongo::setPoolSize(10);
$m = new MongoClient("mongodb://ipremote:port");
$db = $m->$dbname;
return $db;
}
</php>
最佳答案
对于错误信息,可能是连接数超过池大小10,连接被拒绝。
由于您的查询速度很慢,也有可能其中一些查询仍在运行 - 占用了一些连接。
关于并发,我不是100%确定,但可能是因为机器上的负载可能太高而无法并发处理查询。
关于php - MongoDB + PHP 无并发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32943067/