内容へ移動
ClownWiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
トレース:
mongodb:php_sample
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== php_sample ====== ====== pecl::mongo ====== ※事前に[[CentOS:pear|pear]]インストール <code> # pecl install mongo # echo "extension=mongo.so" > /etc/php.d/mongo.ini </code> ====== PHP Sample ====== ===== 其の1 ===== <code> <?php ini_set( 'display_errors', 1 ); //$mongo = new Mongo("127.0.0.1:27019"); //$mongo = new Mongo("mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019", array("replicaSet" => "replset")); $mongo = new MongoClient("mongodb://127.0.0.1:27017,127.0.0.1:27018,127.0.0.1:27019", array("replicaSet" => "replset")); $db = $mongo->selectDB("testdb"); $col = $db->selectCollection("testcol"); $cursor = $co </code> Mongoは非推奨になったので、MongoClientに変更 ===== 其の2 ===== * $name:phpの変数 * '$name':mongodbの変数、キー名、etc * "name":変数名 <code> $user = $collection->aggregate(array( // 指定時間以降のログ array( '$match' => array( "time" => array('$gte' => $start_date ) ) ), // クエリでgroup byして平均時間を集計 array( '$group' => array( "_id" => array( "query" => '$query', "hostname" => '$hostname', ), "time_avg" => array( '$avg' => '$time_sum' ), "time_min" => array( '$min' => '$time_min' ), "time_max" => array( '$max' => '$time_max' ), "error_count" => array( '$sum' => '$error_count' ), "utime_min" => array( '$min' => '$utime_begin' ), "utime_max" => array( '$max' => '$utime_begin' ), "count" => array( '$sum' => 1 ), ) ), // クエリ、平均時間を取得 array( '$project' => array( "_id" => 0, "query" => '$_id.query', "time_sum" => '$_id.time_sum', "hostname" => 1, "count" => 1, "error_count" => 1, "time_avg" => 1, "time_min" => 1, "time_max" => 1, "utime_min" => 1, "utime_max" => 1, ) ), // 平均時間の降順(遅い順)でソート array( '$sort' => array( "time_avg" => -1 ) ), // 10レコード取得 array( '$limit' => 10 ) )); </code> ===== リモートでエラーになる ===== * リモートで接続するとエラーになることがある。 <code> $uri = 'mongodb://remote:27017,remote:27018,remote:27019/'; $mongo = new Mongo($uri, array('replicaSet' => 'replset')); </code> <code> Fatal error: Uncaught exception 'MongoConnectionException' with message 'No candidate servers found' in ~ </code> * replicaSetオプションを無くすとつながる <code> $uri = 'mongodb://remote:27017,remote:27018,remote:27019/'; $mongo = new Mongo($uri); </code> * でも、セカンダリにつながるとエラーになる。 <code> Fatal error: Uncaught exception 'MongoCursorException' with message 'remote:27019: not master and slaveOk=false' in ~ </code> * 優先読み込みのオプションで、「プライマリが使えない場合にだけセカンダリからの読み込みを実行する」設定にするとつながる <code> $uri = 'mongodb://spider07:27017,spider07:27018,spider07:27019/'; $mongo = new MongoClient($uri, array('readPreference' => MongoClient::RP_SECONDARY_PREFERRED)); </code> * または、カーソルの設定でセカンダリの問い合わせを許可する <code> MongoCursor::$slaveOkay = true; $cursor = $col->findOne(); </code>
mongodb/php_sample.txt
· 最終更新: 2025/02/16 13:53 by
127.0.0.1
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ