php - MongoDB + PHP 无并发

标签 php performance mongodb concurrency

我有一个用 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/

相关文章:

php - 剥离一个数字并每次减去最后一位数字返回它

Xcode 4.3.2 和 100% CPU 在空闲时间不断

ruby-on-rails - 如何修剪 MongoDB 查询中字段的空格

php - 将动态 PHP/SQL 动态子菜单与 CSS 集成

php - 从 php 运行 csf 命令而不是 root

php - 1900 年以来的日子

c# - LINQ 的 Enumerable.Take 方法在速度方面是否与 SQL 的 TOP 相当?

python - 将嵌套循环计算转换为 Numpy 以加快速度

javascript - express 4 router with express.Router(),如何获取全局数据库连接?

node.js - mongodb 聚合 $lookup 与查找和填充