Reza Sadeghzadeh
3 سال پیش توسط Reza Sadeghzadeh مطرح شد
5 پاسخ

مدیریت رکوئست ها به سرور

با سلام خدمت همه دوستان و اساتید محترم
من یک سوال داشتم، شما فرض کنید در یک وبسایت لاراولی یک جدول user و با ستون balance (موجودی کیف پول) وجود داره، و یک api داریم که به محض اینکه رکوئست بهش میدیم از موجودی کاربر کم میکنه و آخرین موجودی رو برمیگردونه.
سوال من اینه که اگه دوتا رکوئست همزمان به سرور زده بشه چه اتفاقی رخ میده؟ بنده این مورد رو تست کردم ظاهرا رکوئست اول اجرا میشه و تا قبل از اتمام رکوئست اول به رکوئست دوم پاسخ نمیده (به رکوئست دوم خطا برمیگردونه). خب این در حالی هست که در یک دیوایس دو رکوئست ارسال شده باشه، آیا اگه در دو دیوایس همزمان رکوئست ارسال بشه بازم سرور به رکوئست دوم پاسخ نمیده؟
و اینکه چطور میشه این مورد رو مدیریت کرد که مثلا یک صف ایجاد کرد و رکوئست ها رو به ترتیب بدون اینکه اختلالی بوجود بیاد اونارو مدیریت کردو به رکوئست ها پاسخ مناسب داد.
با تشکر

@hesammousavi
@abbas.ameriyan
@websaz
@mohaligateway


ثبت پرسش جدید
عباس عامریان
تخصص : توسعه دهنده وب
@abbas.ameriyan 3 سال پیش مطرح شد
1

سلام وقتت بخیر
همونطور که خودت و دوستان هم گفتید باید در این شرایط از Queue استفاده بشه ولی گفتم یک چیز رو اضافه کنم اونم استفاده از

DB::transaction()

بهتره زمانی که از دیتا هایی مثل مبالغ و یا در کل هر چیزی که مثل یک transaction هست از این امکان لاراول استفاده کنید تا دیتا ها در صورت مشکل آسیب نبینه
که داکیومنت رسمی لاراول اینجا میتونید مطالعه کنید
و برای Queue هم میتونید اینجا داک مورد نیاز رو بگیرید
موفق باشید


سینا خاقانی
تخصص : توسعه دهنده بک‌اند
@sina.it91 3 سال پیش مطرح شد
0

@rezasa341
سلام بهترین راه برای اینکه ریکوئستها از بین نرن همون صف هستش که خودت بهش اشاره کردی
ولی چون کار با تراکنشها حساسیت زیادی داره باید این صفها رو خوب مدیریت کنی که کاربر زیاد معطل نشه و همچنین خطایی در کار بوجود نیاد


Reza Sadeghzadeh
تخصص : توسعه دهنده وب
@rezasa341 3 سال پیش مطرح شد
0

سلام
اطلاع دارید چطور باید صف ایجاد کنم؟ اگه منبعی وجود داره بهم معرفی کنید ممنونتون میشم


عباس عامریان
تخصص : توسعه دهنده وب
@abbas.ameriyan 3 سال پیش مطرح شد
1

سلام وقتت بخیر
همونطور که خودت و دوستان هم گفتید باید در این شرایط از Queue استفاده بشه ولی گفتم یک چیز رو اضافه کنم اونم استفاده از

DB::transaction()

بهتره زمانی که از دیتا هایی مثل مبالغ و یا در کل هر چیزی که مثل یک transaction هست از این امکان لاراول استفاده کنید تا دیتا ها در صورت مشکل آسیب نبینه
که داکیومنت رسمی لاراول اینجا میتونید مطالعه کنید
و برای Queue هم میتونید اینجا داک مورد نیاز رو بگیرید
موفق باشید


سیدعلی موسوی
تخصص : سی شارپ و پی اچ پی
@juza66 3 سال پیش آپدیت شد
2

سرویس دهندهای وب (وب سرورها) می توانند بصورت موازی به درخواست های کاربران بدون مشکل جواب بدن ولی بحث سر نسخه های قدیمی زبان php هست که نمی تونه درخواست ها رو بصورت موازی جواب بده و حتما پشت سرهم اجرا میکنه، توی نسخه 8 php فیچر Asynchronous اومده و درخواست بصورت موازی رو قابل اجرا کرده.


و برای جواب خودت

دو تا رئکویست سمت سرور با یک دیوایس و در لحظه مشکلی ایجاد نمیکنه!

رئکویست اول اجرا شده میره واس رئکویست های بعدی دیگه! اینجور نیست که درخواست بعدی شما fail بشه!


Reza Sadeghzadeh
تخصص : توسعه دهنده وب
@rezasa341 3 سال پیش مطرح شد
0

با تشکر از همه دوستان
@abbas.ameriyan
@juza66
@sina.it91


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

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