سلام دوستان
من یه سوال در مورد درخواست های ارسالی به سمت لاراول دارم. در یه اپلیکیشن لاراولی وقتی درخواستی از یک کاربر ارسال میشه تا زمان اتمام پردازش اون درخواست، امکان ارسال هیچ درخواستی از سایر کاربرها وجود نداره. حتی صفحه اصلی سایت رو هم نمیشه باز کرد تا اون پردازش به اتمام برسه. مسلما راه حلی برای این مورد وجود داره، ممنون میشم دوستانی که تجربه در این زمینه دارن راهنمایی کنن.
سپاس
ممنون از پاسخت ولی من نمی خوام از Queue استفاده کنم چرا که می خوام کاربر پاسخ درخواستش رو همون لحظه دریافت کنه. با Queue این کار شدنیه؟
وقتی از صف استفاده میکنید، نمیتونید همون لحظه جواب رو به کاربر نشون بدین. چون اون task قرار هستش بعدا انجام بشه
بله من هم متوجه این موضوع هستم ولی چه راه حلی در لاراول وجود داره که بتونه به چند درخواست همزمان جواب بده؟؟؟
قطعا باید راه حلی موجود باشه
با حقیقتا دقیق متوجه نمیشم منظورتون چیه چون میفرمایید با صف هم نمی خوای کار کنی
فک کنم اگه از pusher استفاده کنی مشکلت حل بشه
من یه سوال در مورد درخواست های ارسالی به سمت لاراول دارم. در یه اپلیکیشن لاراولی وقتی درخواستی از یک کاربر ارسال میشه تا زمان اتمام پردازش اون درخواست، امکان ارسال هیچ درخواستی از سایر کاربرها وجود نداره. حتی صفحه اصلی سایت رو هم نمیشه باز کرد تا اون پردازش به اتمام برسه.
چطور؟! مثلا کسی که در سایت راکت (لاراول) باشه و درخواست ثبت نام یا درخواست ثبت تایپیک تویی انجمن بده سایت از دسترس خارج میشه تا Request برای کاربر برگردونه؟!! کی همچین حرفی زده؟!
ببینید
وقتی شما آدرس یه وب سایت رو توی مرورگر وارد کنید.. در واقع دارید یه درخواست از نوع GET به سمت سرور میفرستید.
حالا اگر درخواست از نوع POST هم باشه، باز به همین ترتیب اتفاق میفته.
کلا پروتوکل HTTP یک پروتوکل Stateless هست و
وب سرور هم تنها محدود به یک درخواست نیست.
این به این معنیه که وقتی درخواستی به سرور میرسه، همون لحظه پردازش میشه و برگشت داده میشه و در آخر پروسس به کلی Terminate میشه.
پس پاسخگویی به درخواست ها بصورت پیش فرض به شکل همزمان اتفاق میفته.
دوستان ممنون از پاسختون
علی جان @ali.bayat
من بارها این موضوع رو امتحان کردم. به عنوان مثال من در حال ایمپورت یک فایل به داخل دیتابیس از طریق ارسال یک فرم در لاراول هستم که این کار مثلا یک دقیقه طول میکشه تا پردازش بشه، تا این پردازش کامل انجام نشه حتی درخواست های GET هم پاسخ داده نمیشه و در واقع مثلا باز کردن یک صفحه از سایت میره تو حالت لودینگ تا اون یک دقیقه انجام بشه
این موضوع با پاسخ دادن به درخواست ها کمی تفاوت داره..
بعضی مواقع بار فشار محاسباتی که روی سرور بالا بره.. بله این اتفاق ممکنه بیفته.
به طور مثال اگر سعی کنید ۱ میلیون آیتم رو در یک حلقه while پردازش کنید.
خوب مشخصا تا این داده ها پردازش نشند، دیگه منابعی برای سرور باقی نمیمونه که پاسخگوی شما باشه.
یک راهی که میتونید امتحان کنید اینه که:
کارتون رو به تکه های کوچیک تر تبدیل کنید و اونهارو به صورت async اجرا کنید:
مقاله زیر رو بررسی کنید:
https://stitcher.io/blog/asynchronous-php
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟