1
  • ユーザーがページ A に移動して、新しいマルチプレイヤー ゲームを作成する
  • ページ A のスクリプトは、ゲームの一意の ID を生成し、そのワーカーを作成します。次のようなもの: Rails runner GameWorker.new(:game_id => game_id).start_game
  • ページ A のスクリプトは、ユーザーをページ B にリダイレクトします。ページ B では、新しく作成されたゲームを表示したり、他のユーザーが参加したりできます。

ワーカーはゲーム終了まで生きている必要があります。

ワーカーを起動するコマンドを実行する適切な方法は何ですか? 何か問題が発生した場合に備えて、非ブロックである必要があり、理想的には出力をログ ファイルにリダイレクトします。

問題があれば、Rails 3 を使用しています。

更新 私は私の質問を言い換えるつもりです:Ruby内からLinuxコマンドを実行し、コマンドが終了するのを待たない方法は?&>>に相当するものを意味します。たとえば、php では &>> は正常に動作し、特別な php 関数を使用する必要はありませんが、Ruby ではオーバーライドされるようで、スクリプトはコマンドが終了して出力を取得するのを待ちます。

4

1 に答える 1

3

ゲームごとにプロセスを実行しないことを強くお勧めします。ターンベースではないノンブロッキングゲームが必要な場合は、イベントマシン、またはhttps://github.com/celluloid/celluloid-ioのようなものを検討することをお勧めします。

どちらの場合も、将来の時点で処理するスレッドを作成することになります。

しかし、-ルビーでプロセスを起動したいだけの場合は、ここに進みます。サブプロセスを起動して忘れる方法から。

pid = Process.fork
if pid.nil? then
  # In child
  exec "whatever --take-very-long"
else
  # In parent
  Process.detach(pid)
end
于 2012-04-05T02:01:35.417 に答える