PDA

View Full Version : سوال: یک سوال درباره متغیر session - ساخت یک متغیر قابل تغییر توسط همه کاربران



e.darvish
جمعه 25 اسفند 1391, 13:47 عصر
سلام
امیدوارم بتونم منظورم رو درست بیان کنم. دوستان من تازه با session var آشنا شدم . می خوام بدونم که چطور میشه یه متغیر session رو برای همه کاربرا استفاده کرد ؟ بذارید توضیح بدم چی میخوام دقیقا :
من می خوام یه متغیر داشته باشم که مثلا 1 تا 100 حرکت کنه و وقتی به 100 رسید دوباره بشه 1 و دوباره بشمره تا 100 . من این کار رو با یه روش احمقانه انجام دادم ! استفاده از دیتابیس ( با MySQL ) . می خوام متغیر باشه . می خوام این متغیر به عنوان pointer در برنامه استفاده بشه . یک دیتابیس شامل 100 تا رکورد رو در نظر بگیرید . می خوام به صورت ترتیبی از رکورد 1 تا رکورد 100 حرکت کنه و هر سری محتوای یک رکورد رو خروجی بده . نکته مهم اینجاست که میخوام این pointer با هر نمایش صفحه یک واحد بهش اضافه بشه . خوب تو هر لحظه ممکنه چندین کاربر به سایت وصل بشن و یه صفحه رو نگاه کنن و می خوام به ازای هر نمایش صفحه یک واحد به این متغیر اضافه بشه . خدا کنه واضح باشه توضیحاتم .

منتظرم دوستان بدجوری گیر کردم :گریه:

eshpilen
جمعه 25 اسفند 1391, 17:39 عصر
فکر کنم با ست کردن session id به یک مقدار یکسان برای همهء کاربران، بشه یک سشن مشترک ایجاد کرد.
البته این روش عملی هم شده و بنده در کد برنامهء دیگری دیدم؛ فکر کنم phpBB بود که در یک بخشی برای جمع آوری آنتروپی از کاربران به این شکل یک سشن مشترک ایجاد کرده بود.
فقط باید حواستون باشه که این سشن مشترک است بین تمام کاربران، و بنابراین نمیشه برای کارهای دیگه که نباید اشتراکی باشن ازش استفاده کرد.

111qqq
جمعه 25 اسفند 1391, 17:53 عصر
خوب مگه همون روش خودت چش بود !!!! استفاده از دیتابیس ( با MySQL ) .......... توی همون دیتابیس یکی تغییرش بده ... اگه هم واست مهمه اون تیبل یا رکورد رو lock کن .... اسون ترین روش همینه دیگه !!!!

eshpilen
جمعه 25 اسفند 1391, 18:10 عصر
آره از استفاده از دیتابیس نترس!
ضمنا اگر از چنین سینتاکسی استفاده کنی، مشکل دسترسی همزمان هم نداره:

update `table_name` set `count`=`count`+1
البته این کد فقط برای آپدیتش است.
برای ریست کردن مقدار شمارنده هم باید یه تمهیدی بکنی که مشکل دسترسی همزمان نداشته باشه. البته اگر این مسئله برای پروژت مهمه.


من این کار رو با یه روش احمقانه انجام دادم ! استفاده از دیتابیس ( با MySQL )
چرا احمقانه؟
کاربرد حتی اگر خیلی کوچک و ساده باشه میشه از دیتابیس استفاده کرد و احمقانه نیست.
طبیعتا چون جدول و عملیات ساده و کوچک است، سرعتش هم خیلی خوبه.

e.darvish
شنبه 26 اسفند 1391, 13:02 عصر
از همه تون ممنونم
دوستان هر بازدید 1 واحد به این شمارنده اضافه میکنه من می خوام به 1 روش بهینه برسم . منظورم استفاده از منابع سخت افزاریه . که از پردازنده و رم کمترین استفاده رو داشته باشه و گیج نزنه . یه چیزایی درباره session var خوندم اما فقط واسه یه کاربر . اینکه همه کاربرا بتونن استفاده کنن رو بلد نیستم . این id که فرمودین رو چه جوری باید استفاده کنم ؟

eshpilen
شنبه 26 اسفند 1391, 13:08 عصر
از همه تون ممنونم
دوستان هر بازدید 1 واحد به این شمارنده اضافه میکنه من می خوام به 1 روش بهینه برسم . منظورم استفاده از منابع سخت افزاریه . که از پردازنده و رم کمترین استفاده رو داشته باشه و گیج نزنه . یه چیزایی درباره session var خوندم اما فقط واسه یه کاربر . اینکه همه کاربرا بتونن استفاده کنن رو بلد نیستم . این id که فرمودین رو چه جوری باید استفاده کنم ؟
بیخیال از همون دیتابیس استفاده کن.
قرار نیست ما نگران و در خدمت کامپیوترها باشیم.
ما کامپیوترها رو اختراع کردیم تا اونا در خدمت ما باشن.
بنابراین تا وقتی واقعا مجبور نشدید یا منفعت بزرگ دیگری نداره، به کار و نگرانی خودتون اضافه نکنید که از کار کامپیوتر کم کنید.

این کاری که شما میگی بعید میدونم روی حتی یک سایت پرترافیک مشکلی ایجاد بکنه. مگر اینکه سایتتون فیسبوکی چیزی باشه!!
امروزه روز مقادیری از منابع سخت افزار که ناچیز محسوب میشن نسبت به گذشته خیلی بیشتره.
مثلا چند کیلوبایت مصرف حافظهء بیشتر اصلا بحساب نمیاد، درحالیکه یه زمانی بخاطر کمتر از این کلی ترفند و زحمت بکار میبردن.
سرور هست و مثلا یک دستگاه خاصی نیست که محدودیت های جدی داشته باشه در منابع سخت افزار.

e.darvish
شنبه 26 اسفند 1391, 13:30 عصر
آقا حرف قشنگی زدی دمت گرم حق با شماست شاید زیادی نگران این کامپیوترهام ! و اینکه هر وقت نیازش حس بشه آدم یه فکری میکنه . اما من یه اعتقادی دارم که دوس دارم نظر شما رو هم دربارش بدونم . اون اینه که دلیل پیشرفت بسیاری از کشورها اینه که بهینه سازی رو همیشه به حداکثر میرسونن تا جایی که دیگه بهترش رو هیچ موجود زنده ای نمی تونه انجام بده . و اینکه زیر ساخت خیلی مهم تره چون بعضی وقتا تغییر زیر ساخت هزینه زمانی و مالی بیشتری رو نسبت بازسازی به وجود میاره ! به قول یه بنده خدایی پیشگیری بهتر از جلوگیریه :لبخندساده:

eshpilen
شنبه 26 اسفند 1391, 13:48 عصر
بهینه سازی توی همه چیز هست.
و بهینه سازی وقت و انرژی خود انسان مهمترین بهینه سازی است.
شما بجای سر و کله زدن با چیزهای بیخود و خیالی اگر بری دوتا چیز دیگه یاد بگیری یا دوتا برنامهء مفید بیشتر تولید کنی خب بنظر من خیلی بهتره. حتی اگر بری مثلا ورزش کنی بازم بهتره. بدن ما هنوزم ارزشمندترین سرمایهء مادی ماست (و بزرگترین نقطهء ضعف ما هم هست).

خارجیها هم من نمیدونم این حرف شما رو دقیقا باید چطور تعبیر کرد؛ کلی و مطلق؟
اصلا زیاد معنی نمیده. باید مورد دقیق/مثال عملی و توضیحات بیشتر بیاری تا بشه بررسی کرد.
مثلا این همه زبانها و ابزارهای سطح بالا واسه برنامه نویسی رو مگه خارجیها درست نکردن؟ مگه این زبانها حتی تا چند صد برابر کندتر از زبانهای قدیمی تر مثل اسمبلی و سی و سی++ نیستن و منابع سخت افزاری بیشتری مصرف نمیکنن؟
ضمنا اون چیزهایی که اونا بهینه سازی زیادی کردن یا نیاز عملی واضح/ضروری بوده و یا به مرور زمان و بصورت تکاملی این کار انجام شده با توجه به تسلط و فرصتهای پیش آمده (که طبیعتا میتونه باعث بشه کار بهینه سازی سریعتر و راحتتر انجام بشه و از دوباره کاری اجتناب بشه)، نه از ابتدا.
در نهایت هم بهرحال هرکاری که خارجیها یا هرکسی انجام میده لزوما درست یا لزوما دلیل اصلی/موثر در موفقیتش نیست. شاید یک موارد دیگری دلیل اصلی مزیت و پیشرفت اونها بوده. و شاید حتی بعضی ها هم بنوعی قربانی شدن (دیگران سود بردن ولی خودشون ضرر) حالا یا بخاطر شرایط محیطی و یا اشتباهات خودشون.

قدرت واقعی در «خرد» است.
نه اینکه به یک جنبهء محدود و کوچکی از کل واقعیت ها و پارامترهایی که در جهان وجود داره بچسبی و بخش قابل توجهی از وقت و انرژی خودت رو هدرش کنی.

e.darvish
یک شنبه 27 اسفند 1391, 23:57 عصر
آقا دستت درد نکنه . اینکه به بدن اهمیت میدی یعنی خوب میفهمی که زندگی کوتاهه ! دیجیتالم کجا بود این قرتی بازیا شاید فقط واسه خارجیا باشه ! راست میگی تغییرات بزرگ کم کم ایجاد شدن . بازم ممنون حله با دیتابیس میریم جلو

MMSHFE
دوشنبه 28 اسفند 1391, 00:29 صبح
فقط یک نکته هم من دیدم بد نیست بگم: چرا برای کار به این سادگی از فایل استفاده نمیکنید که سرعتش خیلی بیشتر از DB هست؟ برای امنیت بیشتر هم میتونید فایل رو یک پوشه بالاتر از public_html ذخیره کنید. اینجور کارها مثل خوندن و اضافه کردن و دوباره ذخیره کردن، اونهم درحالی که فقط با یک مقدار سروکار داریم و بحث دسترسی ترتیبی و... مطرح نیست، با فایلها خیلی بهتر جواب میده.

e.darvish
دوشنبه 28 اسفند 1391, 00:44 صبح
اینم پیشنهاد بدی نیست مرسی

eshpilen
دوشنبه 28 اسفند 1391, 05:09 صبح
بحث دسترسی ترتیبی و... مطرح نیست
بحث دسترسی ترتیبی مطرح نیست؟
یعنی چی؟

MMSHFE
دوشنبه 28 اسفند 1391, 07:25 صبح
ببینید یکی از کاربردهای خیلی خوب دیتابیس موقعی مطرح میشه که حجم داده ها زیاد باشه و بخوایم فقط با یک یا چند مقدار کار کنیم. اونوقت چون توی فایل، دسترسی ترتیبی هست (سطر به سطر باید بخونیم بریم جلو)، درنتیجه سرعت کار با DB بیشتر از فایل خواهد بود چون مستقیماً رکورد موردنظر رو استخراج میکنه و برای تغییر هم نیازی نیست دوباره کل محتوا بازنویسی بشه. به این روش دسترسی که مستقیماً سراغ داده موردنظر میریم، دسترسی تصادفی میگن که نقطه مقابل دسترسی ترتیبیه.