|
出来るのだASP Q&A掲示板(過去LOG)
訪問数 52046
昨日 889
今日 776 【PR】 パソコン入門からIT専門書まで幅広く取り揃えています。セブン-イレブン受取り手数料無料のセブンアンドワイ。 |
Topに戻る
掲示板に戻る
検索
削除
管理者
|
| [2116] アプリケーション変数 |
| 投稿者:北岳さん 2002/05/30 7:18:42 |
| 以下、「[2076] セッション変数 」の続編です。 ■Session変数はユーザごとに管理されますが、Application変数は全ユーザが共有的に使用します。 ---------- 1.asp --------- Session.contents("scnt")=Session.contents("scnt")+1 Application.contents("acnt")=Application.contents("acnt")+1 ------------------------- 甲、乙が1.aspを複数回実行する場合、 甲のSession.contents("scnt")は甲が1回実行するときのみ1つ増加し、乙の実行とは無関係。 甲はセッション変数の中身を0、1、2・・・と連続的に増加させます。 Application.contents("acnt")は、誰かが実行すれば1つ増加。 甲は、他のユーザが同時アクセスしているときは、アプリケーション変数の中身を101、103、108・・・と断続的にしか増加できません。 通常、甲が接続を中止して20分経過したら、甲が使っていたSession変数はすべて消滅します。 一方通常、Application変数はサーバが稼動中は継続します。 どちらも、Application(または Session).Contents.RemoveAllメソドなど使えば強制的に消滅させられます。 ■Application変数は複数ユーザ間の相互干渉を避けたいときに使います。 ---------- 2.asp ------- if Application.Contents("flag")=0 then Application.Contents("flag")=1 (ファイルやDBの書換処理) Application.Contents("flag")=0 end if ------------------------- 甲が 2.aspを実行してファイルを更新しているときに、乙が 2.aspを実行しようとしても、Application.Contents("flag")=1になっているので、乙はファイルを更新できません。 しかし乙のアクセス直前に、丙がたまたま別のASP、 ---------- 3.asp ------- Application.Contents("flag")=0 ------------------------- を実行すると、Application.Contents("flag")は 0 に戻ってしまい、直後に乙が 2.aspを実行すると、甲と干渉します。 (1.aspと3.aspを両方用意しておくような不注意なサーバは、珍しいとは思いますが。) ■Application.Lockは、他のユーザが Application変数を書き換えられないようロックします。 ロックした本人だけは、ロック中も書換え可能です。 ---------- 2.asp(改) ------- if Application.Contents("flag")=0 then Application.Lock Application.Contents("flag")=1 (ファイルやDBの書換処理) Application.Contents("flag")=0 Application.Unlock end if ------------------------- 甲が 2.asp(改)を実行中に丙が 3.asp にアクセスしても、Application.Contents("flag")=0 は実行されず、値は 1 のままです。 ■Application.Lock でロックされるのは、アプリケーション・オブジェクト(変数)のみです。 更新中のファイルやDBそのものを、ロックするのではありません。 |
![]()
Application.Lockついて
ASPmanさん
[2002/05/29 18:14:39]
[2115]
|
アプリケーション変数
北岳さん
[2002/05/30 7:18:42]
[2116]
Re:アプリケーション変数
北岳さん
[2002/05/30 10:48:58]
[2117]
Re:アプリケーション変数
ASPmanさん
[2002/05/30 18:49:38]
[2118]
|
|
TreeBBS For ASP V.0.1.3 |