我的开发团队无法从本地开发环境访问远程 MongoDB 数据库。
远程 Ubuntu 开发服务器正在运行最新的 MongoDB v2.4.3 和 PHP 5.3 以及为 PHP 5.3 构建的 mongo-php-driver v1.3.7。mongodb.conf
除了基本路径设置外,几乎是空的。当前没有分片或副本集。
所有团队成员都使用 OSX 10.8、PHP 5.3,并为 PHP 5.3 构建了 mongo-php-driver v1.3.7。一些团队成员使用 XAMPP,另一些则使用内置的 OSX AMP 堆栈。我们在所有主要的桌面浏览器上进行测试。
每当页面需要从 Mongo 抓取数据时,我们首先调用这个连接函数:
public static function connect($server, $db)
{
$connection = new MongoClient(
"mongodb://{$server}:27017",
array(
"connectTimeoutMS" => 20000,
"socketTimeoutMS" => 20000
)
);
return $connection->$db;
}
但是,将近 30% 的页面加载遇到以下错误:
Failed to connect to: www.development-server.com:27017: send_package: error reading from socket: Timed out waiting for header data
似乎大部分错误发生在刷新页面而不是导航到新页面时,但这更多的是猜测而不是事实。我检查了每个人的php.ini
文件并确认default_socket_timeout = 60
已设置。
开发服务器还托管该站点的副本,但从未抛出错误,大概是因为它只是调用 localhost 来到达那里。当我在本地安装 MongoDB 时,错误也消失了。
这确实似乎是一个超时问题,但我找不到任何进一步的设置、参数或配置来调整到期期限。有吗?