バックグラウンドジョブとして処理するだけで済みます。ヘロクではとても簡単です。 Resque + Redisを使用しますが、DelayedJobを使用することもできます。 Resque(githubによって構築)は、Redis(キーバリューストア)の上にあるキューイングレイヤーです。 DelayedJobを使ってキューイングを行うよりもはるかにスケーリングが簡単ですが、どちらの方法でも動作します。
- 最初に、無料のHeroku Redis to Go addonをインストールします。
- 次に、Redis To GoのResque with Redis on Heroku blog Postに従って、宝石などを設定してください。
それがセットアップだ後は、ここにあなたがする必要があるすべてです:
- は、フォームデータを投稿してください。
- 保存する未処理は後で処理します。
- キューに何かを追加したことをResqueに伝えます。
フォームは、ユーザー作成フォームの場合、コードは次のようであるかもしれない:
module SaveUser
@queue = :save_user
def perform(attributes = {})
user = User.create(attributes)
user.process! if user && !user.processed_everthing?
end
end
def create
Resque.enqueue(SaveUser, params[:user])
end
...あなたものparams、キューの中だけid
を保存する(ない、次のようにそれを書くことができます)
module SaveUser
@queue = :save_user
def perform(id)
user = User.find(id)
user.process! if user && !user.processed_everthing?
end
end
def create
user = User.create(params[:user])
Resque.enqueue(SaveUser, user.id)
end
すべてをキューイングすると、すぐに次のページに移動します。
ユーザーはすぐに次のページの処理結果を確認する必要がある場合は、しかし、あなただけの何かを把握する必要があるとしています。
8フィールドのうち5フィールドが入力されたフォームを送信していて、サーバーがタイムアウトしていますか?フォームデータで何をやっているのですか? – Alex