آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
مشکل عدم دسترسی خریداران پیشین به برخی آموزش ها برطرف شد
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

پیاده سازی مشابه امکان synchronized block ، در php

hamidd  9 سال پیش  9 سال پیش
0 0

سلام دوستان . انجمن چقدر خلوته . یک سوال داشتم نمی دونستم بپرسم یا نه، چون خیلی به سوالات کم جواب داده میشه.

سوالم در زمینه ی برنامه نویسی دیتابیس هست.

در بعضی زبانهای برنامه نویسی مثل جاوا، در تردها ما با استفاده از synchronized block جلوی بروز باگ را می گیریم. 

مثلا در زمینه ی کار با دیتابیس، ما وقتی با ترد های مختلف می خواهیم با دیتابیس کار کنیم (اگر راهی نداشته باشیم تا جلوی باگ را بگیریم) با استفاده از synchronized block، شی مورد نظرمان (که  اینجا منظورمان statement ای که query را اجرا می کند است) را قفل میکنیم و جلوی بروز باگ را می گیریم.

راه حلی دارید برای رفع این مشکل در php ؟

لطفا از stackoverflow و اینها لینک نزارین، اگه خودتون تجربه ای دارید و تست کردید، لطفا مطرح بفرمایید.

+1 0
من تجربه ی مستقیم تو این زمینه ندارم. لینکی هم نمیذارم!! اما راهکار و نظر من اینه که برای جلوگیری از بروز چنین باگی باید برای هر درخواست یک id انحصاری در نظر گرفته بشه که به هیچ وجه تکراری نشه. امیدوارم دوستان دیگه توضیح دقیقتری ارائه بدن. (9 سال پیش)
+1 0
ممنونم . البته من اینجا منظورم منحصرا کار با دیتابیس هست و کاری به درخواست ها ندارم. می خوام جوری باشه وقتی اون یک کاربر داره روی (فیلد خاصی از ) دیتابیس کار می کنه کاربر بعدی نتونه روی (اون فیلد خاص)دیتابیس کارکنه و مثل همون synchronized block یه جورایی تو صف بمونه و بعد اجرا بشه کدش. (9 سال پیش)
+1 0
سوالتون خیلی به جا و مهمه. دوست دارم اساتید نظر بدن. برا خودمم سوال شده الآن! اما حمید جان، ایجاد یک صف انتظار به نظرتون کار درستی هست؟ این وقفه بعدا باعث بروز خطا نمیشه؟ به نظر من ایجاد این محدودیت باعث ایجاد وقفه زمانی هرچند اندک میشه. البته الآن سوال چیز دیگه ای هست و اینکه چطور این محدودیت رو اعمال کنیم (9 سال پیش)
+1 0
البته اون چیزی که بنده تو ذهنمه رو نمیشه دقیقا اسم صف انتظار رو روش گذاشت و تقریبا چیزی شبیه به همونه. و اتفاقا کار درستی هست و خیلی ام خوبه، و حتی به غیر از هدفی که ما داریم ،فشار روی دیتابیس در یک زمان خاص رو کم میکنه و جلوی هزینه رو هم میشه گرفت . (9 سال پیش)
0 0
up (9 سال پیش)
+1 0
سلام دوست عزیز این مبحثی که شما مطرح کرده اید مربوط به ساختار پایگاه داده میشه و خیلی مفصله توی ارشد یک درسی داریم به اسم پایگاه داده پیشرفه که داخل اون مباحث پیشرفته و اینکه کلا ساختار پایگاه داده ها چطوری هست که باعث جلوگیری از dead lock و دسترسی چند کاربر به طور همزمان از یک فیلد میشه رو مطرح کردن و به گونه ای سیتم رو طراحی میکنن که قابل برگشت به حالت سازگار رو داشته باشه و اگه دوتا کاربر خواستن از یک داده استفاده کنند خود پایگاه داده میاد بر اساس یک timestamp اونها رو اولویت بندی میکنه و اولویت بندی میکنه و معمولا اولویت رو پردازشی میده که پیرتر هست و زمان بیشتری تو سیستم بوده البته چند تا نکته اینجا هست 1.الگوریتم های مختلفی وجود داره یکیش اینه ممکنه هر پیایگاه داده کار حاصی انجام بده ولی مطمنا برای این جور مسایل خود برنامه نویسان پایگاه داده فکری کرده اند که شما با مشکل مواجه نشدید و در گیرش نشین 2.این درس پایگاه داده پیشرفته خیلی مفصل تر این حرفاست که من بتونم همش بگم شاید یکم هم گنگ گفته باشم ویا از این شاخه به اون شاخه رفته باشم 3.اینکه من این درس رو همین ترمی دارم و چیز هایی که تا به الان بهمون گفتن رو منتقل کردم شاید تا آخر ترم راه حل های دیگه ای داشته باشن ولی میخواستم یک درک کلی از این ساختار رو بهت گفته باشم موفق و موید . (9 سال پیش)
0 0
یک چیز دیگه ای هم که یادم رفت بگم اینه که دوستان شما برنامه نویس وب هستین این مسایل مربوط به برنامه نویسی پایگاه داده هست که کار راحتی هم نیست پس خودتون رودر گیر این مسایل نکنید :) (9 سال پیش)
+1 0
@fandroid از صورت مساله دور شدیم. ببینید اون بحث قابل برگشت به حالت سازگار که گفتید زیاد چیزی نیست که سخت باشه و به سوال مربوط باشه. خیلی چیز ساده ایه، خود مدیریت دیتابیس query ها رو صف بندی می کنه یعنی همزمان دو تا query رو اجرا نمی کنه و مشکلی هم ایجاد نمیشه. بحث ما روی یک چیز دیگه ست. مثل این که صورت سوال رو با دقت نخوندید. پیشنهاد می کنم یک بار دیگه سوال رو بخونید. صورت سوال روی بحث پیاده سازی مشابه امکان synchronized block ، در php متمرکز شده، که مربوط به برنامه نویسی هست و قابل حل هم هست و براش راه حل هایی وجود داره. اتفاقا بنده پیشنهاد می کنم در فیلم های آموزشی این مورد آموزش داده بشه، درسته که ما یک شغل داریم به اسم طراح پایگاه داده و اگه خودمون نتونیم طراحی پایگاه داده رو انجام بدیم، باید طراح پایگاه استخدام کنیم ولی این بحث مربوط به برنامه نویسیه و جز ابتدایی ترین موضوعاته و اگر در فیلم های آموزشی آموزش داده بشه خوبه، چون برای مبتدی ترین افراد هم یاد گرفتنش مهمه ( بنده جلوی باگ رو به یک صورت دیگه گرفتم و الگوریتم مورد نظرمو تغییر دادم ولی برای افراد دیگه بهتره آموزش داده بشه، چون مربوط به php هست و راه حل برطرف کردنش در این لینک هست لینک ولی توقع داریم از کسانی که روی روشی که توی لینک مطرح کردم تسلط دارن ، علم خودشون رو در اختیار بقیه افراد که در آینده این سوال براشون مطرح میشه بزارن و موضوع بعدی این که برنامه نویس پایگاه داده نداریم، طراح و آنالیزور پایگاه داده داریم. لذا حتی اگر بنده طراح و آنالیزور دیتابیس هم استخدام کنم وظیفه ی برطرف کردن این مشکل بر عهده ی خودم هست. (9 سال پیش)
0 0
دوست عزیز شاید من درست سوالت رو متوجه نشدم ولی اون قمستی که گفتی دو کاربر همزمان مقداری رو بخونن وتغییر دهند دقیقا داخل بحث پایگاه داده پیشرفته مطرح شده و راه حل های مواجه با اونم پیاده سازی شده. مطمئنا شما تو سایتا گشتین مث stackoverflow و... و به جوابی که میخواستین نرسید و دلیلشم فک کنم این باشه که اصلا سوالتون خیلی گنگ هست مطمن هستین همچین چیزی رو باید از طریق php رفع کرد ؟ (9 سال پیش)
0 0
اتفاقا همون بحثی که گفتم دو کاربر همزمان مقداری رو بخونن و تغییر دهند مربوط به باگ برنامه نویسی میشه. تفاقا سوالم گنگ نیست چون synchronized block رو هم مثال زدم کسی اگه با synchronized block کار کرده باشه تازه راحت تر می دونه چی میگم و براش خیلی واضحه که چی می خوام.(سوالم شاید حرفه ای باشه ولی گنگ نیست و مبتدی ترین افراد هم باید تسلط پیدا کنن روش. به خاطر همین میگم توی آموزش ها بهتره آموزش داده بشه.( به اندازه ی جلوگیری از sql injection که توی آموزش ها آموزش داده شده این مساله هم اهمیت داره). اره دیگه راه حل اش توی لینک بالا هست از طریق php حل شده مشکل اش. (9 سال پیش)
 برای این سوال پاسخی وجود ندارد.

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .