2017-07-17 14 views
-2

私の研究のためにウェブベースのゲームを作りたいと思っています。毎時報酬付きゲーム

ゲームは単純です:あなたは100 $を持っている、あなたはのは一本の木を言わせて購入することができ、登録後、この木はあなたに時速10個のリンゴを与えるだろうし、1つの$

私の質問があるのために使用すると、1個のリンゴを販売することができます。私はこの木を毎時10個のリンゴにしますか?データベースに接続してすべてを更新する別のC#コンソールプログラム(別名cronジョブ)を記述する必要がありますか?ユーザーを捕まえ、木を手に入れ、1時間ごとにリンゴを与えますか?私はそれを試みましたが、それはパフォーマンスの問題です

私はそれをやろうとしましたが、ダミーの1000ユーザーと各ユーザーに10000ツリー(合計10000000ツリー)を持っていましたが、 cronジョブと呼ばれる)私はすべてのプレーヤーをキャッチし、その木をカウントし、それらにリンゴを追加し、データベースを保存するために、エンティティフレームワークとforeachループを使用していたリンゴ

ですべての偽のプレイヤーに報いるために5分以上を取っていることはまず

+1

この種のジョブはdbコードではありません。現在のRDBMSには、ある種のスケジューラがあります。 –

+0

@ BarryO'Kane Microsoft SQL Serverではどのようにしますか? – AlekPsk

+1

適切なデータを更新するストアドプロシージャを作成します。その後、SQL Serverエージェントで毎時間SPを実行させます。エージェントについての情報はこちらhttps://msdn.microsoft.com/en-us/library/ms191439(v=sql.105).aspx –

答えて

0

を変更しますあなたのサーバーへのリクエストがリンゴカウント更新を見ることができる唯一の方法であれば、次のリクエストの前にそれらのアップデートを行う必要はありません。 latest_apple_drop_datetimeを保存することができ、要求に応じて、リンゴが何回ドロップされたか、そして最近のドロップがいつあったかを計算することができます。そうすれば、あなたはcronjobを必要としません。次に、プレーヤーは他のプレーヤーの活動を見ますか?そうでなければ、要求しているプレイヤーのツリーだけを処理する必要があります。最後に、すべての更新を1つのUPDATEステートメント(SQLデータベースを使用していることを前提としています)に実装し、データベース自体にパフォーマンスを最適化させます。

+0

こんにちは、誰もが他のプレイヤーのリンゴなどを見て欲しいので、私はcronjobが必要だと思います..あなたの情報をありがとう – AlekPsk

関連する問題