php.ini の設定により動作が変化します。
名前 | デフォルト | 変更可能 |
---|---|---|
mongo.allow_empty_keys | false | PHP_INI_ALL |
mongo.allow_persistent | true | PHP_INI_SYSTEM |
mongo.auto_reconnect | true | PHP_INI_SYSTEM |
mongo.chunk_size | 262144 | PHP_INI_SYSTEM |
mongo.cmd | "$" | PHP_INI_ALL |
mongo.default_host | "localhost" | PHP_INI_ALL |
mongo.default_port | 27017 | PHP_INI_ALL |
mongo.long_as_object | false | PHP_INI_ALL |
mongo.native_long | false* | PHP_INI_ALL |
mongo.utf8 | "1" | PHP_INI_ALL |
以下に設定ディレクティブに関する 簡単な説明を示します。
mongo.allow_empty_keys
int
バージョン 1.0.11 で追加されました。
空文字列 ("") をキーの名前として許可するか否か。 デフォルトでは、データベースに空文字列のキーを渡そうとすると ドライバが例外を発生させます。 ダブルクォートの中で $ 演算子を使う場合などに、 不注意で空文字列を渡してしまうことは非常にありがちです。 この設定はデフォルトのままにしておくことを推奨します。 しかし、空文字列のキーを保存する必要がある場合はこのオプションを true にします。そうすると、ドライバが空文字列をそのままデータベースに送るようになります。
mongo.allow_persistent
bool
持続的接続を許可するかどうか。
mongo.auto_reconnect
bool
接続が切れた場合にデータベースに再接続するかどうか。
mongo.chunk_size
int
チャンクあたりのバイト数。GridFS ファイルを分配する際に使用します。 この数値は、少なくとも 100 以上で 4 メガバイト未満 (最大値: 4194204)、そして小さめにすることを推奨します。
mongo.cmd
string
修飾子や比較において $ のかわりに使う文字。
"$" のエスケープはついつい忘れてしまいがちなので、独自の文字を '$' のかわりに使うことができます。キーの名前に現れない文字、たとえば ":" などを選びましょう。
mongo.cmd = ":"
その後、比較を行うにはこのようにします。
<?php
$query = array( "i" => array( ":gt" => 20, ":lte" => 30 ) );
?>
コード内で ini_set("mongo.cmd", ":") で変更することもできます。 もちろん、シングルクォートやバックスラッシュで $ をエスケープすることもできます。
mongo.default_host
string
コンストラクタに何も渡さなかったときに使う、デフォルトのホスト名。
mongo.default_port
string
データベースサーバーへの接続に使用する TCP ポート番号。 ポート番号が指定されなかった場合にこれを使用します。 データベースのデフォルトは 27017 です。
mongo.long_as_object
string
BSON_LONG を、プリミティブ型ではなく MongoInt64 のインスタンスで返します。
mongo.native-long
int
この項目のデフォルトは 2.0.0 からは TRUE
に変わりました。
設定したい値 (おそらく TRUE
でしょう) をきちんと設定しておくようにしましょう。
そうすれば、ドライバをアップグレードしたときにいきなり挙動が変わることがなくなります。
64 ビットプラットフォームでは、mongo.native_long を設定すれば 64 ビット整数値を MongoDB に格納できるようになります。 設定しなければ、保存できるのは 32 ビット整数値だけです。 この項目を設定したときに使われる MongoDB のデータ型は BSON LONG です。 この設定を off にしたときに使われるデータ型は BSON INT となります。
この設定は、MongoDB から BSON LONG を読み込んだときの振る舞いにも影響します。 mongo.native_long を有効にしなければ、 ドライバは BSON LONG をすべて PHP の double 型に変換するので、精度が失われる可能性があります。
32 ビットプラットフォームでは、mongo.native_log の設定は整数値を MongoDB に格納する際には何の影響も及ぼしません。 整数値はこれまで通り BSON INT で格納されます。しかし、この設定を有効にして BSON LONG を MongoDB から読み込むと MongoCursorException がスローされ、 もとの精度のままではデータが読み込めないということを警告します。
32 ビットシステム上では特に、この項目とあわせて mongo.long_as_object を有効にしておくことを推奨します。
mongo.utf8
int
非 UTF8 文字列に対して例外をスローするかどうか。 バージョン 1.0.4 になるまでは、PHP ドライバは非 UTF8 文字列を無視していました。 たとえそれが追加するつもりのなかったものであったとしてもです。 1.0.4 以降は、ドライバが MongoException をスローするようになりました。 非 UTF8 文字列を追加するアプリケーションの移行時の手間を軽減するため、 このオプションをオフにすれば以前のように例外をスローしない設定にすることができます。 このオプションはバージョン 1.1.0 以降で廃止され、非 UTF8 文字列に対しては常に例外をスローするようになります。