سلام دوستان وقت بخیر
چند تا سرویس دارم که با api هست و می خواهم به کاربر ها ارائه بدم و بعد از دریافت اطلاعات از موجودی کاربر در سیستم کم بشه اما مشکل اینجاست که اگر در یک زمان چند درخواست به سیستم ارسال بشه فیلد دریافتی یک مبلغ می گیرن و بعد از کم کردن از اون در جدول ذخیره می کنن
مثلا
اگر موجودی کاربر 100 تومن باشه و هزینه سرویس 10 تومن باشه و دو تا درخواست هم زمان ارسال بشه هر دو از مبلغ 100 تومن تراکنش رو کم می کنن یعنی هر دو 90 تومن رو ذخیره می کنن راه حلی هست که درخواست ها به سرویس توسط یک صف انجام شود
سلام
نمیدینم این روش کار میکنه یانه
همانطور که ما برای اینکه مطمعن بشیم تمام ایمیل های ما به مقصدشون ارسال بشه اون هارو داخل یک notification مینوشتیم و اینترفیس shouldQueue تو notification ایپلیمنت میکردیم حالا ما به جای ایمیل یک سری دیتا داریم که قراره به یک سری api فرستاده بشن ؛ فکر کنم بشه کدی به غیر از ارسال ایمیل تو notification بنویسیم .
فقط کافی هستش دیتا مد نظر از کاربر بگیریم و به notification ارسال کنیم و چون ایترفیس shouldQueue تو notification ایمپلیمتن کردیم
خود لاراول اونو تو صف قرار میده
اگه منظورتون از نظر درخواست ها هستش .خب بستگی به درخواست های شما داره اگه فکر میکنید queue database مناسب این کار نیست میتونید از سرویس هایی شبیه به rabbitmq استفاده کنید
آموزش سرویس rabbitmq با لاراول
بازم مستندات لاراول بخونید شاید روش بهتری برای پیاده سازی باشه
مستندات لاراول
خیلی ممنون از راهنماییتون @MatinTayebi
من به سه تا جواب رسیدم
Deadlocks در دیتابیس https://laravel.com/docs/8.x/queries#pessimistic-locking
استفاده $user->decrement('wallet',$price)
با https://github.com/phlib/mutex
خوب حالا اگر تجربه کار کردن با اینا رو دارید لطفا راهنمایی کنید و اگر نظر بهتری از اینا دارید بنویسد
خیلی ممنون از جوابا ها
سلام
الان دارم به پاسخ شما نگاه میکنم فهمیدم من اصلا کمک زیادی نکردم .
شما یک چیز دیگه میخواستید من یک چیز دیگه میگفتم 😅
و حالا در مورد رورش هایی که گفتید من حقیقتش با پکیج mutex کار نکردم که نظر بدم اما در مورد روش های قبلی ، خوبیش اینجاست که کالکشنی از مدل user به ما برمیگردونه که اگه خواستیم بلای دیگه ای سر دیتا مون بیاریم دستمون باز باشه.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟