为啥我得到 slaveOkay = 0;超时 = 30000 MongoPHP

Posted

技术标签:

【中文标题】为啥我得到 slaveOkay = 0;超时 = 30000 MongoPHP【英文标题】:Why do I get slaveOkay = 0; Timeout = 30000 MongoPHP为什么我得到 slaveOkay = 0;超时 = 30000 MongoPHP 【发布时间】:2013-11-01 11:03:21 【问题描述】:

我正在使用 Mac、netbeans、x-debug 和 Mongo php。我正在尝试运行基本搜索,例如:

$results = $mongo->$col->find();

但是在调试过程中,$results 的值是 slaveOkay = 0 和 timeout = 30000。为什么会这样?有关已安装工具的一些版本信息是:

PHP 5.4.20 (cli) (build: Sep 24 2013 10:10:10) (DEBUG) 版权所有 (c) 1997-2013 PHP Group Zend Engine v2.4.0,版权所有 (c) 1998-2013 禅德科技 使用 Xdebug v2.2.3,版权所有 (c) 2002-2013,作者 Derick Rethans

MongoDB shell 版本:2.4.6

谢谢。

【问题讨论】:

这些似乎是属于驱动程序自己管理的值......这些值看起来如何?你能迭代实际的结果集吗? 不,除了:slaveOkay boolean 0 和 timeout 30000 之外,属性 $results 中没有其他内容。没有其他结果,也没有错误。这些值正是我在调试模式下在 $results 变量中看到的值。 【参考方案1】:

$col 变量从何而来? 而$mongo从何而来?

查询集合的正确方法是

<?php
$mongo = new MongoClient(...);
$collection = $mongo->databaseName->collectionName;
$results = $collection->find();
?>

然后你可以像这样遍历$results

foreach($results as $document) 
    /* Do something with $document */

请参阅http://php.net/mongocollection.find 和http://php.net/mongo.queries 了解更多详情

【讨论】:

以上是关于为啥我得到 slaveOkay = 0;超时 = 30000 MongoPHP的主要内容,如果未能解决你的问题,请参考以下文章

redis集群配置为啥用自身ip会超时换成127.0.0.1就可以了?

为啥@jdbc 查询因连接超时而失败?

为啥没有网络连接时 Alamofire 需要这么长时间才能超时?

ping对方的IP,为啥总是显示“请求超时”?

为啥我得到 Lat Long 0.0?

为啥我的 ajax 请求得到响应 0?