🎉 سال نو، مهارت نو، مشاوره رایگان نقشه راه برنامه نویسی (آفر ویژه ثبت نام قبل از افزایش قیمت 🔥)
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ علی
متد dispatchAfterResponse
جامعه لاراول ایجاد شده در ۲۱ اردیبهشت ۱۴۰۱

سلام و خسته نباشید

تویه توضیحاتی که درمورد متد dispatchAfterResponse در داکیومت queue لاراول هست نوشته

This will still allow the user to begin using the application even though a queued job is still executing

میدونم که این مدل job‌ها به صف ارسال نمیشن و در انتها request بعد از اینکه reponse ارسال شد پردازش میشن. اما منظور از اینکه کاربر همچنان می‌تونه شروع به استفاده از برنامه کنه حتی اگر یک queued job هنوز در حال اجرا باشه چیه ؟ یعنی درمواردی غیر این اگر یک job هنوز در حال اجرا باشه کاربر نمیتونه از برنامه استفاده کنه؟

سلام علی عزیز، وقت به خیر. ببین در بعضی از اپلیکیشن‌ها کاربر از یک جایی به بعد باید منتظر یکسری جواب‌ها از سمت سرور باشه تا بتونه با اپلیکیشن کار کنه مثل چی ? اینکه منتظر کد ورود به اپلیکیشن بمونه و تا موقعی که کد نیاد کاربر نمیتونه به ادامه کارش با اپلیکیشن بپردازه. چرا؟ ? چون ارسال Sms یک کار (Job) هست که باید در صف (Queue) قرار بگیره و کاربر باید منتطر بمونه تا در صف مورد نظر پردازش انجام کار ارسال SMS مرتبط با خودش انجام بشه.

ولی حالا فکر کن که میخوای به کاربرت یک پیام خوش آمد گویی ارسال کنی بعد از لاگین و حتما میخوای این پیام وقتی به دستش برسه که کاربر لاگین کرده و همون موقع صفحه کاربریش رو دیده. اینجا شما باید یک Delay بین پاسخ سرور و اجرای کار (Job) ارسال پیام خوش آمد گویی داشته باشی و چون نمیدونی که این Delay چقدر هست که از متد delay استفاده کنی پس این میسپاری به خود لاراول و میگی این کار دقیقا بعد از اینکه Respnse به کاربر ارسال شد انجام بشه. اینطور هم کاربر به کارش با برنامه ادامه میده و هم کار شما بعد از ارسال پاسخ به کاربر انجام میشه.

حالا این یک مثال بود ولی شرایط دیگه هم هست که این متد مناسب هست مثلا میخوای از کل Request کاربر لاگ بگیری و یا میخوای کش کاربر رو پاک کنی بعد از لاگین و ... . اینها کارهایی هستند که چند ثانیه پردازششون طول میکشه (مثل ارسال ایمیل ) و برای ما مهم هست که حتما بعد از ارسال Response به کاربر انجام بشن ? موفق باشی ?

بهترین پاسخ
محمد حسن عاطفت ۲۱ اردیبهشت ۱۴۰۱، ۰۶:۱۱