راکت
حل شده

کنترل اجرای تابع

3 پاسخ

سلام وقت بخیر
بنده تابعی دارم که انبار سیستم را به روز رسانی میکنه
وقتی این تابع در حال اجراست نباید این تابع و توابع دیگری فراخوانی بشن چون این توابع در دیتابیس تغییر ایجاد میکنند اجرای همزمان این توابع باعث بروز خطا میشن
من از Session استفاده کردم و سشنی در شروع اجرای این تابع مقدار دهی کردم و در پایین نیز حذف میکردم و در حین فراخوانی توابع دیگر چک میکردم که در حال اجرا نباشه
اما چون سشن روی مرورگر هست ممکن است از سیستم دیگری این توابع فراخوانی بشن و خطا رخ بده
به نظرتون چطوری میتونم اجرای این توابع را کنترل کنم ؟
ممنون میشم راهنمایی بفرمایید.
@mhyeganeh @ali.bayat

ثبت پرسش جدید

پاسخ‌ها

3
فرشید مرادی
فرشید مرادی
@eniack

تخصص: noob

بهترین پاسخ

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

فرشید مرادی
فرشید مرادی
@eniack

تخصص: noob

سلام وقت بخیر ،
یک فیلد وضعیت میتونید در نظر بگیرید مثلا در حالت updating و ...
برای موقع هایی که قرار بروز رسانی انجام بشه در دیتابیس وضعیت به updating تغییر میکنه و با شرط if کنترل کنید که در این حالت کدوم تابع اجرا بشع

مجید
مجید
@majeeddehghan

تخصص: برنامه نویس

دقیقا متوجه منظورتون نشدم
منظورتون اینه متغیر سراسری تعریف کنم ؟
@eniack

شاید پاسخ شما همین‌جا باشد

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام