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