1

時刻または現在の曜日に基づいて、データベース内の属性をどのように更新しますか。エネルギー、空腹、幸福の 3 つの属性があり、1 時間ごとに 10 ずつ減らしたいのですが、これを行う方法がよくわかりません。データベースにタイムスタンプがあることは知っていますが、それらの使用方法がよくわかりません。また、ジョブに応じてプレイヤーのスキルを毎日変更したいと考えています。したがって、この仕事をしている場合は、毎日知性を 2 増やしてください。しかし、その2を毎日追加する方法がわかりません。誰かがこの問題について助けてくれれば幸いです。大変ありがたく存じます。

4

2 に答える 2

3

いくつかのオプション:

  • cronjob: SQL スクリプトを介してデータベースに直接アクセスするように cronjob をセットアップするか (セットアップに関してはおそらく最も単純なソリューションです)、最初に Rails アプリケーションを実行することができます (たとえば、更新する前に追加のビジネス ロジックを実行する必要がある場合)。データベース - ユーザージョブに基づいてデータベースを更新することについて言及しました)。後者のアプローチについては、この投稿を参照してください。

  • バックグラウンド タスク: Starling/WorklingまたはBackgroundrbを見てください。これらのいずれかを使用して、データベースを定期的に更新できるバックグラウンド タスクを実行できます。

于 2011-04-29T16:35:13.953 に答える
1

これを実現するには、一般的ではあるが根本的に異なる 2 つの方法があります。

  • 各リクエスト中に、最後のリクエストから経過した時間をシミュレートします。ユーザーが 3 時間間隔で 2 つのリクエストを行った場合、30 幸福度 (10/時間 x 3 時間) を一度に引いて、3 時間経過をシミュレートします。これはリソース集約型ではありませんが、もう少し考える必要があります。「1 時間ごとに値を 10 ずつ下げる」という単純なことは難しくありませんが、より複雑な相互作用をモデル化することはより困難です。

  • 各アカウントから 10 幸福度を差し引くために、毎正時にプログラムでアクションを呼び出す cron ジョブを実行します。これは概念的には簡単ですが、多くのユーザーがいる場合、特に一部のユーザーが長期間アイドル状態になっている場合は、多くのオーバーヘッドが伴います。

于 2011-04-29T16:26:25.100 に答える