راکت
حل شده

صف queue

4 پاسخ

@nimageneral
@mhyeganeh
@behzad.azizan
@abedim910
این قضیه صف در آپارات به چه شکل هست مثلا همزمان چند نفر در حال آپلود فیلم هستند اینجا صف به چه شکل هست و یا همزمان چند نفر دارن یک ویدیو رو میبینن اما هنوز تعداد ویو ها آپدیت نشده چطوری این اپدیت میشه و ایا تو صف میندازه یا نه؟

ثبت پرسش جدید

پاسخ‌ها

4
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

آره دقیقا همین اتفاق می‌افته..

حالا در این حین ممکنه بعضی از کارها به هر دلیلی Fail بشند، که لاراول اونها رو هم ذخیره میکنه و میتونی دوباره اجراشون کنی..
سیستم صف لاراول واقعا فوق العاده ست و درایور های زیادی هم داره.

محمد عابدی
محمد عابدی
@abedim910

تخصص: Senior Web Developer

@mehdisut سوالتون دو بخشه که پاسخشون متفاوت هست...
سوال اول اینکه لاراول با job این مساله رو کامل هندل کرده و شما میتونید با job صفی رو برای انجام عملیات مورد نظرتون تشکیل بدید که آپارات برای پروسس روی ویدیو ها اینکار رو انجام میده و اصلا بدون صف تقریبا غیر ممکن هست.
و اما راجع به سوال دوم:
راه های زیادی برای این قضیه وجود داره که من همیشه از ردیس (ردیس داده‌ها را با سیستم Key-value نگهداری می‌کند و به لطف این ویژگی از آنجایی که رابطه پیچیده‌ای میان داده‌ها ایجاد نمی‌شود، دسترسی و بازیابی این اطلاعات بسیار ساده‌تر خواهد شد.) استفاده میکنم و هر چند ساعت دیتا رو به دیتابیسم انتقال میدم و برای مثال column hits دیتابیسم رو آپدیت میکنم

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

زبان PHP یک زبان تفسیری هست که کدها رو به شکل Synchronous اجرا میکنه.

یعنی وقتی شما ۵ تا تابع رو پشت سر هم اجرا کنی
اول تابع اول اجرا میشه و وقتی تموم شد -> تابع دوم و الا آخر

حالا بعضی از کارها هستند که زمان‌بر هستند، مثلا

  • ارتباط با یک وب سرویس
  • ارسال ایمیل
  • انجام محاسبات پیچیده
  • عملیات های مختلف روی فایل ها..

مثلا وقتی بخواهی یک فایل ویدیویی رو به نوع دیگه ای تبدیل کنی، این یک عملیات زمان بر هست
و تا وقتی که تموم نشه، کدهای بعدی اجرا نمیشند
این موضوع باعث افت Performance در یک سیستم نرم‌افزاری میشه


در پلتفرم NodeJs و یا زبان #C اومدن و یه سری روشهای aSynchronous رو استفاده کردند که باعث میشه با مشکل بالا روبرو نشیم..

نوشتن کدها در PHP هم به صورت asynchronous ممکنه اما هنوز به شکل رسمی در هسته PHP تعبیه نشده.

راه‌کار لاراول برای حل این مشکل استفاده از سیستم صف یا Queue هست
به این صورت که کارهایی رو که می‌دونیم زمان‌بر هستند به یه صف میفرستیم و در background اونها رو انجام میدیم
به این ترتیب نیازی نیست کل سیستم Idle بمونه تا اون تسک تموم بشه

شاید پاسخ شما همین‌جا باشد

ftp
ftp
@ftp

تخصص: ساده

@ali.bayat
@abedim910
این که ما کار مورد نظر رو تو صف میندازیم تا در background انجام بشه یعنی وقتی که کار ما وارد صف شد phpمیره و دستور بعدی رو اجرا میکنه ,و صف خودش کار رو انجام میده درسته؟

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

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