MongoDB + PHP 无并发

3
我有一个使用MongoDB来攻击数据库的PHP应用程序。我的问题是,有时候需要进行查询,但会花费很长时间,并且会抛出以下错误: Catchable fatal error: Argument 1 passed to MongoCollection::__construct() must be an instance of MongoDB, null given in..
即使我打开两个相同的浏览器,如果在每一个浏览器中访问该应用程序,直到其中一个浏览器结束查询,另一个浏览器也不会开始查询。为什么不能并发进行?
我使用的是MongoDB 2.6.5、PHP 5.3.3-7以及PHP MongoDB Driver 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>
1个回答

0

对于错误信息,可能是连接数超过了10个的池大小,导致连接被拒绝。

由于您的查询速度较慢,有可能是因为其中一些查询仍在运行 - 占用了部分连接。

关于并发性,我不是100%确定,但可能是因为机器负载过高,无法同时处理查询。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接