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

از آن جایی که بین متغیر های Session و Client و تشابه هایی وجود دارد، آن ها را در یک مقاله توضیح می دهم.

 

1-  متغیرهای Client

متغیرهای Client به جای اینکه در سیستم کاربر ذخیره گردد، در سرور Coldfusion ذخیره می گردند. متغیرهای Client با مرورگر کاربر یک جفت تشکیل می دهند و برای هر مرورگر یک Client.MyVar وجود دارد. برای این که سرور کلدفیوژن بتواند تشخیص بدهد که کدام متغیر Client مربوط به کدام مرورگر می باشد، از یک جفت متغیر CFID و CFTOKEN استفاده می کند. بعدا در باره ی این دو متغیر بحث خواهیم کرد.

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

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

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

 

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

 

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

 

2-       متغیر های 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” کنیم :

 

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

 

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

 

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

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

 

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

 

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

 

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

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *