私の開発チームは、ローカル開発環境からリモートの MongoDB データベースにアクセスする際に問題を抱えています。
リモートの Ubuntu 開発サーバーは、PHP 5.3 用に構築された mongo-php-driver v1.3.7 を使用して、MongoDB および PHP 5.3 の最新の v2.4.3 を実行しています。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 をローカルにインストールすると、エラーもなくなりました。
これは実際にはタイムアウトの問題のようですが、有効期限を調整するためのその他の設定、パラメーター、または構成が見つかりません。いずれかがあります?