マニュアル
PHP Manual

php.ini オプション

php.ini の設定により動作が変化します。

Mongo 設定オプション
名前 デフォルト 変更可能
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
PHP_INI_* モードの詳細および定義については どこで設定を行うのか を参照してください。

以下に設定ディレクティブに関する 簡単な説明を示します。

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 文字列に対しては常に例外をスローするようになります。


マニュアル
PHP Manual