3

現在のすべての海辺のセッションと予想される有効期限を示すレポートを表示するにはどうすればよいですか?

self session application sessionsDo: [:each | 
html text: 'Session For ',((each properties values at: 1) username),' Expires At: '.
html render: (Time now addSeconds: (each application cache expiryPolicy timeout)).
html break].

ただし、これは、すべてのセッションが同時に期限切れになるという誤った結果を示しています。これは、現在の時刻から600秒です。「残り時間」を取得する別の方法が見つかりません。

WWLD?(ルーカスは何をしますか)?

KRダスティ

4

1 に答える 1

7

次のコードはそれを行う必要があります:

WAApplication allInstances do: [ :application |
   application keysAndHandlersDo: [ :key :session |
      | policy table |
      policy := application cache expiryPolicy.
      table := policy instVarNamed: 'lastAccessTable'.
      Transcript 
        show: session; show: ' expires in '; 
        show: policy timeout - (Time totalSeconds - (table at: key));
        show: ' seconds'; cr ] ]

上記のコードは、将来変更される可能性のある内部データ構造にアクセスすることに注意してください。また、セットアップで機能させるために、チェックを追加する必要がある場合もあります。

また、マイナス秒になる可能性があることにも注意してください。これは、セッションが消えるはずですが、まだ刈り取られていないことを意味します。

于 2012-11-27T12:23:04.450 に答える