0

一般的な問題ですが、mongodbとphpは初めてなので、ご容赦ください:-)。

私はブログ投稿サイトを作成しており、ブログごとに一意のblogIdを提供することを目的としており、ユーザーはhttp://www.sitename.com/blogIDにアクセスできます。

私はカウンターを(整数として)mongodbに保存しており、誰かが自分のブログを投稿したときにそれをインクリメントします:

$collection = $collection = new MongoCollection($db, 'blogCount');;     
$object = $collection->findOne();
$count = $object['count'];
$id = $object['_id'];
$collection->update(array('_id'=>$id),array('$inc' => array("count" => 1)));
$object = $collection->findOne();
$count = $object['count'];

これまでは正常に機能していましたが、複数のユーザーが同時にブログを投稿しようとすると、複数のユーザーに同じ$countが提供される可能性があります。

どうすればこの問題を解決できますか?ありがとう。

4

1 に答える 1

1

ここでの問題は、データベースへの同時アクセスがある場合でも、一意の ID を作成し、それが再利用されないようにすることです。

MongoDB では、findAndModify() コマンドを使用してこれを行います。MongoDB でこれを行う方法のレシピについては、こちらを参照してください。

findAndModify() の詳細については、こちらを参照してください。

于 2012-10-17T21:04:35.130 に答える