2011-07-27 5 views
0

grailsアプリケーションに関する質問があります。私はサーバー側で多くの作業を行うコントローラーを持っており、そのタスクを完了するまでに数分かかることがあります。私は、コードが実行されている間にユーザーがリフレッシュを押すと、コードを再度実行しようとします。どのように私はこれを防ぐだろう。既に実行されている場合は、以下のいくつかの擬似コードgrailsサーバ側のコードが既に実行されている場合、実行されないようにする方法

def refreshDb = {  
    requeryDataBase() 
} 

    public void requeryDatabase(){ 

    ....some long process here 
    } 

がそうである、どのように私が実行しているからrequeryDataBaseを()を防止しますか?

ご協力いただきありがとうございます。 jason

答えて

1

複数のユーザーが次のようなものを使用できるようにするには、セッションオブジェクトを使用することができます。

  public void requeryDatabase(){ 
if (session['queryRunning']==false) { 
    session['queryRunning']=true 
    ....some long process here 
session['queryRunning']=false //set to false so the user can execute the controller again 
} 
else { 
    //Put code to notify the user to be pacient here 
} 
  } 
+0

ありがとうございました。これはそうするようだ! – jason

関連する問題