0

Coldfusionには、lastvisitと呼ばれるシステム作成のクライアント変数があります。

実際に設定されているリクエスト(つまりclient.thisvisit)中にその変数の値を取得する方法はありますか?

「ThisVisit」タイムスタンプをセッションに保存し、次のリクエストが行われたときにそれをlastvisitと比較できるという考え方です。これにより、セッションで別のリクエストが行われたかどうかがわかります。

目的は、毎分ロックを更新するajaxレコードロックを使用するページを作成することです。60分後、ajaxロックコードはユーザーをWebサイトから自動的にログアウトします(非アクティブのため)。この問題は、ユーザーが他のウィンドウ/タブ(アクティビティの表示)でタスクを実行している場合に発生します。

すべてのリクエストがLastVisitを更新することを検知します。次に実行するときに、LastVisitクライアント変数と比較できるように、ajaxロックコードに「thisvisit」値を保存してもらいたいと思います。

4

1 に答える 1

2

いくつかの要件:

  • クライアント変数にレジストリではなくDBを使用するように設定します(信頼してください)。
  • クライアント変数では、「グローバル変数」を有効にする必要があります
  • cfapplicationまたはapplication.cfcで、クライアント管理を有効にする必要があります。

これらの3つがある場合は、次のようなクエリを選択できます。

<cfquery name="getLvisit" datasource="myClientVarsDB">
    SELECT lvist 
    FROM   cglobal
    WHERE  cfid = 
        <cfqueryparam type="CF_SQL_CHAR" value="#urltoken#"/>
</cfquery>

urltokenが間違っている可能性があります...jsessionIDまたはCFIDが必要な場合がありますが、私のメモリはcftokenを教えてくれます。決定的な答えを出すには、クライアントDBを使用してサイトを探し出す必要があります。

つまり、lvisit変数の現在の値がわかります。これをセッションに保存し、それを再度上書きする前に、後続のクエリでテーブルの値と比較します(それが理にかなっている場合)。

注-この値はリクエストごとに更新されるため、クエリは現在の値を取得します(更新される)。以前はこれが最初に更新されたと思っていましたが、トムによると実際には最後に更新されました。

于 2012-06-11T13:38:47.127 に答える