Ali Ghaleyan
5 سال پیش توسط Ali Ghaleyan مطرح شد
12 پاسخ

نحوه ی کار صف ها queue در لاراول Laravel

سلام و خسته نباشید به همگی ...
بهتره با مثال توضیح بدم: در لاراول شما کارهایی که قراره در صف بزارید مثل ارسال ایمیل ها ، در دیتابیس در جدول job ذخیرش میکنید
و وقتی در cmd دستور php artisan queue:work رو میزنید یک سرور منتظر میمونه تا هر row که به جدول اضافه میشه بره و کار مربوط بهش رو انجام بده ...

این که منتظر میمونه و وقتی دیتایی وارد دیتا بیس میشه و .... چطور انجام میشه ...
و اینکه اصلا این سیستم صف ها به چه شکلی چیده میشن

@hesammousavi
@ali.bayat
@Alimotreb


ثبت پرسش جدید
Ali Ghaleyan
تخصص : برنامه نویس لاراول
@Serjik 5 سال پیش مطرح شد
0

یعنی شخصی نیست که بدونه queue:work لاراول چطور کار میکنه؟
آیا به این صورته؟

while (true) {
            // get first row from job table and do it
        }

@khanzadimahdi
@hesammousavi
@ali.bayat
@mani
@30bshop


مانی
تخصص : ارشد پایتون(digikala.com)
@mani 5 سال پیش آپدیت شد
-8

@Serjik
سلام

بقران نمیدونم


mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 5 سال پیش مطرح شد
1

سرور منتظر نمیمونه! اگه قرار باشه منتظر بمونه باید چیزی شبیه nodejs باشه که event ایجاد بشه و یک listener داشته باشه.

درون لاراول یک کوئری زده میشه و جاب ها رو از درون دیتابیس میگیره و هرکدوم رو یکی یکی اجرا میکنه و در اخر هم کار تموم بشه قطع میشه روند اجرا. به بعدش اگه چیز جدیدی اظافه بشه ران نمیشه! باید دوباره از اول دستور اجرای جاب رو بزنید.

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


mahdi khanzadi
تخصص : Software engineer
@khanzadimahdi 5 سال پیش مطرح شد
3

@mani

سلام. این وضع جواب دادن نیست! مثلا تخصص هم زدید ارشد پایتون دیجی کالا! اگه شما واقعا ارشد باشید توی دیجی کالا , من دیگه از دیجی کالا چیزی نمیخرم چون کسی که ارشد هست باید بدونه چجوری جواب یکی دیگه رو بده! به قرآن نمیدونم که نشد جواب!

@hesammousavi


مانی
تخصص : ارشد پایتون(digikala.com)
@mani 5 سال پیش مطرح شد
-4

@khanzadimahdi
شوخی کردم بااوووو


Ali Ghaleyan
تخصص : برنامه نویس لاراول
@Serjik 5 سال پیش مطرح شد
0

نمیدونم یا من اسمش رو اشتباه میگم یا هر مشکلی که از سمت من هست ، به کنار
وقتی برای مثال یک کلاس event رو implements میکنیم از ShouldQueue اون event در صف قراره میگیره یا به عبارتی میره و داخل دیتابیس ذخیره میشه... درسته؟

اگه درسته ... وقتی من queue:work or queue:listen میزنم کارهای لازم رو انجام میده و وقتی باز event صدا زده میشه کاری که قرار بوده event انجام بده در صف قرار میگیره و اجرا میشه بلافاصله

اینهایی که گفتم درستن؟

@khanzadimahdi


Ali Ghaleyan
تخصص : برنامه نویس لاراول
@Serjik 5 سال پیش مطرح شد
0

یعنی شخصی نیست که بدونه queue:work لاراول چطور کار میکنه؟
آیا به این صورته؟

while (true) {
            // get first row from job table and do it
        }

@khanzadimahdi
@hesammousavi
@ali.bayat
@mani
@30bshop


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
-7

لاراول یک کد open source هست، لطف کنید یه زحمت به خودتون بدید وارد کدهای پکیج اصلی بشید دنبال command مربوط به work:queue بگردید ببینید در قالب این کد چه اتفاقی می‌افته ! هر کی بخواد بهتون بگه چطور کار میکنه باید بره اونجا کدشو ببینیه !!


Ali Ghaleyan
تخصص : برنامه نویس لاراول
@Serjik 5 سال پیش مطرح شد
-1

@hesammousavi
اومدم اینجا پرسیدم چون فکر میکردم قبلا کسی بهش برخورده باشه


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

@Serjik
منم الان دارم بهتون میگم دنبال این commad در هسته بگردید کدی که توش قرار داره اینکار رو میکنه با خودنش میتونید درکنید چه شکلی اینکار انجام میشه.


حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

و اینکه این بر اساس قاعده listener و event پیاده‌سازی شده و یک worker داره حالا این worker بر اساس تنظیمات worker مشخص میشه


Ali Ghaleyan
تخصص : برنامه نویس لاراول
@Serjik 5 سال پیش مطرح شد
0

@hesammousavi
بله
بسیار ممنونم ازتون
همینم که به عنوان بهترین پاسخ انتخاب کردم ... با توجه به کدهایی که در هسته لاراول و job خوندم ، متوجه شدم که در کل همچین کاری انجام داده میشه
دوستانی که براشون سواله بدونن :)


علی
تخصص : برنامه نویس بک اند,backend dev...
@DevNull 2 سال پیش مطرح شد
0

سلام میشه نتیجه تون رو اعلام کنید؟ (جمع بندی)
@Serjik


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

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