close
دانلود فیلم
آموزش کلد فیوژن : متغیر های Client و Session

آموزش ColdFusion

آموزش کلد فیوژن : متغیر های Client و Session
متغیرهای Client
متغیرهای Client به جای اینکه در سیستم کاربر ذخیره گردد، در سرور Coldfusion ذخیره می گردند. متغیرهای Client با مرورگر کاربر یک جفت تشکیل می دهند و برای هر مرورگر یک Client.MyVar وجود دارد. برای این که سرور کلدفیوژن بتواند تشخیص بدهد که کدام متغیر Client مربوط به کدام مرورگر می باشد، از یک جفت متغیر CFID و CFTOKEN استفاده می کند. بعدا در باره ی این دو متغیر بحث خواهیم کرد.
برای تنظیم حداکثر مدت زمان باقی ماندن متغیرهای Client ، از Administrator کلدفیوژن استفاده می شود. مقدار پیش فرض 90 روز می باشد. شما می توانید این مقدار تا یک روز پایین بیاورید. اگر از متغیرهای مربوط به CFID و CFTOKEN خاصی ، در این مدت زمان استفاده نگردد، متغیرهای مربوط به آن از روی سرور پاک می گردد.



برای استفاده از متغیرهای Client ، ابتدا باید با استفاده از cfapplication ، مقدار clientManagement را true کنید. به این صورت :

<cfapplication clientManagement=”true” … >

سپس، برای ایجاد متغیرهای Client از CFSet و یا CFParam به صورت زیر استفاده کنید :

<CFSet Client.MyVar=1>
<CFParam name=”Client.MyVar” default=”1”>

یکی از کاربردهای جالب متغیرهای Client ، متغیر Client.LastVisit می باشد که خود به خود ایجاد می گردد و مقدار آن خود به خود به روز می گردد و دارای مقدار تاریخ آخرین روزی است که وب سایت جاری توسط یک مرورگر در خواست شده است. برای استفاده از این متغیر، به مثال زیر توجه کنید :

<CFOUTPUT>
Welcome back to the Web
SuperShop, your last visit
was on #DateFormat(Client.LastVisit)#.
</CFOUTPUT>

برای حذف کردن یک متغیر Client ، از تابع DeleteClientVariable() به صورت زیر استفاده کنید :

<cfset result=DeleteClientVariable(“MyVar”)>


متغیرهای Session
متغیرهای Session در RAM سیستمی که سرور کلدفیوژن در آن اجرا می شود ذخیره می گردند و مانند متغیرهای Client برای هر مرورگر مجزایی متغیرهای Session مجزا ایجاد می شوند و این متغیرها نیز، توسط متغیرهای CFToken و CFID از هم باز شناخته می شوند.

تفاوت های بین متغیرهای Client و متغیرهای Session عبارت است از :

  • متغیرهای session قادر به ذخیره سازی انواع داده ی پیچیده مانند Structure ها و آرایه ها می باشند، ولی متغیر های Client تنها قادر به ذخیره سازی داده های ساده مانند رشته های متنی و اعداد می باشند.
  • متغیرهای session   نیاز به استفاده از CFLock می باشند ولی متغیر های Client نیازی به استفاده از CFLock ندارند. (بعدا در این مقاله استفاده از CFLock را شرح خواهم داد.)
  •  مدت عمر متغیرهای کمتر از مدت عمر متغیرهای Client می باشد.
  •  اگر سرور Coldfusion را از نو راه اندازی کنیم، متغیرهای Session از بین خواهند رفت ولی متغیر های Client هم چنان باقی خواهند ماند.
  •  متغیرهای Session از لحاظ فضای اشغالی هیچ محدودیتی ندارند در حالی که متغیرهای Client به 32 کیلوبایت محدود هستند.

 

برای استفاده از متغیرهای Session ، ابتدا باید SessionManagement را به صورت زیر “true ” کنیم :


<cfapplication sessionManagement=”true” … >

اگر می خواهید مقدار پیش فرض مدت عمر متغیرهای Session را تغیر دهید، مقدار SessionTimeout را به روش زیر تغییر دهید :

<cfapplication sessionmanagement=”true” sessiontimeout=”#CreateTimeSpan(0,0,20,0)#” …>

مثلا مثال بالا حداکثر مدت طول عمر متغیر های از نوع Session را برابر 20 دقیقه قرار می دهد. ( در تابع CreateTimeSpan ، پارامتر اول تعداد روزها، پارامتر دوم، ساعات، پارامتر سوم، دقیقه ها و پارامتر آخر ثانیه ها می باشند.)

برای حذف یک متغیر Session از تابع StructDelete به روش زیر استفاده کنید :

<cfset Result=StructDelete(Session,”MyVar”)>

برای حذف تمام متغیرهای Session ، از cfapplication به روش زیر استفاده کنید :

<cfapplication sessiontimeout=”#CreateTimeSpan(0,0,0,0)#” …>

 

متغیرهای Session در حافظه ی سرور کلدفیوژن ذخیره می گردند و کاربرهای مختلف ممکن است خواهان دسترسی به آن ها در یک زمان خاصی باشند. برای اینکه در مدیریت حافظه اختلال به وجود نیاید، باید هنگام خواندن مقدار و یا مقدار دهی این متغیرها استفاده از حافظه را به یک کاربر خاص محدود کرد و پس از آن که این کاربر خاص کار بر روی مقادیر متغیرها را تمام کرد، نوبت به کاربر دیگر می رسد.

برای این کار، از cflock استفاده می کنیم. برای مقدار دهی به متغیرهای session ، از cflock به صورت زیر استفاده می کنیم :

<CFLock name=”Session_MyVar”
type=”Exclusive”
timeout=”10”
throwOnTimeOut=”Yes”>
<CFSet Session.MyVar=”1”>
</CFLock>

برای خواندن مقدار یک متغیر  session از cflock به صورت زیر استفاده می کنیم :

<CFLock name=”Session_MyVar”
type=”READONLY”
timeout=”10”
throwOnTimeOut=”Yes”>
<CFSet Variables.MyVar=Session.MyVar>
</CFLock>


لینک کوتاه پست
مطالب مرتبط با پست جاری
  • نکات مهم
    1- لطفا نظر خود را با زبان فارسی بیان کنید
    2- رایتم نظرات اسپم و تبلیغی شما را تایید نمی کند
    3- لطفا نظرات شما بدون ابهام و واضح باشد
  • نام
    ایمیل (منتشر نمی‌شود) (لازم)
    وبسایت
    :):(;):D;)):X:?:P:*=((:O@};-:B/:):S
    نظر خصوصی
    مشخصات شما ذخیره شود ؟[حذف مشخصات] [شکلک ها]
    کد امنیتی
به کانال تلگرام سایت ما بپیوندید