X
تبلیغات
نماشا
رایتل

خورشید طلایی توس

سلام برخورشید همیشه تابان خراسان؛ وب‌نوشته‌های حسن مهدیان
چهارشنبه 11 اردیبهشت‌ماه سال 1387

بررسی شیئ Session

از شئ Session برای ذخیره و تغییر تنظیمات مربوط به یک جلسه کاری کاربر استفاده می شود. متغیرهای ذخیره شده در شئ فوق صرفا اطلاعات مربوط به یک کاربر را ذخیره کرده و در تمامی صفحات مربوطه به یک برنامه قابل دستیابی هستند.
زمانیکه با یک برنامه کار می کنید، آن را فعال کرده ( Open ) و پس از بهره برداری از پتانسیل های آن در صورت لزوم تغییرات لازم را انجام و در نهایت برنامه را غیرفعال ( Close ) می کنید.

فرآیند فوق یک جلسه کاری با نرم افزار مورد نظر را نشان می دهد. در چنین حالتی کامپیوتر، شما را کاملا می شناسد، او می داند که شما چه زمانی برنامه را شروع و در چه زمانی به اجرای آن خاتمه داده اید.
در رابطه با برنامه هائی که بر روی اینترنت اجراء می شوند، به یک مشکل خاص برخورد خواهیم کرد :
سرویس دهنده وب، نه شما را می شناسد و نه می داند که چه کارهائی کرده اید، علت این امر در نحوه رفتار پروتکلی است که بعنوان استاندارد دریافت و ارسال بین سرویس گیرنده وب ( مرورگرها ) و سرویس دهنده وب ایفای وظیفه می کند ( پروتکل HTTP ). پروتکل فوق Stateless است یعنی وضعیت قبلی را نگهداری نمی کند.
ASP، با امکان ایجاد یک کوکی (Cookie) منحصربفرد برای هر کاربر توانسته است راهکاری شایسته برای این مشکل ارائه نماید. کوکی فوق برای هر سرویس گیرنده ارسال می گردد و شامل اطلاعاتی است که هویت اینترنتی کاربر را شناسائی و معرفی می نماید. واسط فوق شئ Session نامیده می شود.
در شئ فوق اطلاعات رایجی نظیر name، id، و ذخیره می گردد. سرویس دهنده برای هر کاربر جدید یک شئ Session ایجاد کرده و پس از اتمام تاریخ مصرف تعیین شده برای آن، از بین خواهد رفت.
قطعا در ذهن خواننده این سوال پیش آمده که این شئ چه زمانی آغاز و تحت چه شرایطی ایجاد میگردد؟

شئ فوق تحت شرایط زیر آغاز می گردد
• کاربر جدیدی درخواست یک فایل ASP را داشته باشد و فایل Global.asa شامل یک روتین Session_OnStart باشد.
• کاربری مقداری را در متغیر Session ذخیره کرده باشد.
• کاربری درخواست یک فایل ASP را داشته باشد و فایل Global.asa از تگ استفاده کرده باشد.

چه زمانی یک Session خاتمه می باید؟
در صورتیکه یک کاربر برای مدت زمان مشخصی در خواست یک صفحه را نداشته و یا آن را بازخوانی مجدد (refresh) ننماید، Session خاتمه می یابد. مدت زمان پیش فرض برای درخواست و یا بازخونی مجدد یک صفحه بیست دقیقه است. با استفاده از صفت Timeout می توان مقدار تعیین شده فوق را کاهش و یا افزایش داد.
مثال زیر نحوه تغییر این مقدار را به ده دقیقه نشان میدهد.

Session.Timeout = 5

بمنظور خاتمه دادن به یک Session می توان از متد Abandon بصورت زیر استفاده کرد.

Session.Abandon

مهمترین مسئله در رابطه با Session، زمانی مطرح می گردد که آنها می بایست متوقف گردند. ما هیچگونه اطلاعی از این موضوع نداریم که آیا آخرین درخواست کاربر بصورت نهائی قطعی شده است یا خیر؟ ما بر روی سرویس دهنده نمی دانیم که تا چه زمانی می بایست Session را بصورت فعال نگهداری نمائیم. در صورتیکه این زمان به درازا بکشد، منابع موجود بر روی سرویس دهنده معطل شده و استفاده بهینه از آنان جای تردید خواهد داشت و در صورتیکه بسرعت Session را از روی سرویس دهنده حذف نمائیم، این نگرانی وجود خواهد داشت که کاربر پس از مدت زمان کوتاهی مجددا به سرویس دهنده متصل و عملا ما بر روی سرویس دهنده اطلاعات وی را نخواهیم داشت. در چنین حالتی کاربر مجبور خواهد بود که همه چیز را از نو آغاز نمائد. بهرحال پیداکردن و تنظیم مقدار مناسب برای Timeout یک مسئله مهم و در عین حال مشکل است.

ذخیره و بازیابی مقادیر متغیر در شئ Session
یکی از موارد مهم و حیاتی در رابطه با شئ Session، توانائی ذخیره سازی متغیرهائی در آن است. در مثال زیر با استفاده از دو متغیر مربوط به شئ Session، یعنی username و age دو مقدار در شئ Session ذخیره شده است

<%
Session("username") = "Hamid"
Session("age") = 20
%>

پس از ذخیره نمودن مقادیر فوق، امکان دستیابی به این مقادیر برای تمامی صفحات در یک برنامه ASP فراهم می گردد. جهت انجام این کار از امکان Session(username) استفاده می گردد. در مثال زیر عبارت Welcome Hamid در اختیار ملاقات کننده صفحه جدید قرار خواهد گرفت.

Welcome <%Response.Write(Session("username"))%>

حذف متغیرهای Session
حذف مقادیر ذخیره شده مجموعه contents شامل تمامی متغیرهائی خواهد بود که آنها را ایجاد و در شئ Session ذخیره کرده ایم.
با استفاده از متد Remove می توان یک متغیر را از شئ Session حذف نمود. در مثال زیر یک متغیر Session با نام username حذف می گردد.

Session.Contents.Remove("username")

با استفاده از متد RemoveAll می توان تمامی متغیرهای ذخیره شده در یک Session را حذف نمود.

Session.Contents.RemoveAll

با استفاده از یک حلقه تکرار می توان تمامی مقادیر ذخیره شده در مجموعه contents را مشاهده و یا عملیات مورد نظر خود را بر روی آنها انجام داد.

<%
Dim i
For Each i in Session.Contents
Response.Write(Session.Contents(i) & "
")
Next
%>

در صورتیکه نسبت به تعداد آیتم های ذخیره شده در مجموعه Contents شناخت لازم را نداشته باشیم، می توان بکمک ویژگی Count این مشکل را حل کرد.

<%
Dim i, j
j = Session.Contents.Count
Response.Write("Session variables:" & j& "
")
For i=1 to j
Response.Write(Session.Contents(i) & "
")
Next
%>
نظرات (0)
نام :
ایمیل : [پنهان می ماند]
وب/وبلاگ :
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)