我正在使用AWS实例并配置了以下堆栈:nginx,phalcon(1.3.4),MongoDB(服务器= 2.6.6,客户端= 1.5.5),Linux(3.13.0-36-通用#63-Ubuntu)和PHP(5.6)。
开发我的应用时,测试没有发现任何问题。 发布后,我开始收到此错误:
MongoConnectionException:MongoCursor :: rewind():php_network_getaddresses:getaddrinfo failed:名称或服务未知
一开始,我将问题缩小到未经优化的代码。在某些情况下,我得到了一个元素数组,循环并为每个数组元素提取Mongo对象。 然后我重构了代码以过滤应用程序内的整个数组,并在较小的子集上获取Mongo对象。
我的测试还显示,如果我的阵列有超过1700个元素,那么这就是Mongo失败的地方。但在解决了这些问题之后,我现在在一个简单的查找中得到了同样的例外!
$users = User::find(array(array('contact.name' => 'Joe')));
我的Mongo连接设置:
$di->set('mongo', function() {
$mongo = new MongoClient('mongodb://localhost:27017,/tmp/mongodb-27017.sock', ["connectTimeoutMS" => 30000]);
return $mongo->selectDb('test');
}, true);
如果我从getgo中获得此错误,问题肯定会在某种程度上与我连接到DB(主机名无法解析等),但它之前使用相同的设置,即&# 39;令人困惑的是什么!
尝试搜索类似的线程,运气不大。有人可以帮忙吗?
修改:我尝试更换' localhost'在127.0.0.1的连接字符串中,它适用于基本命令,但应用程序中的某些模型仍然失败