میلاد هدایت پور
3 سال پیش توسط میلاد هدایت پور مطرح شد
9 پاسخ

اجرا شدن همیشه queue:work در cpanel

سلام من میخوام دستور queue:work مثل دستور artisan serve همیشه در حال اجرا باشه روی هاستم
یجا خوندم باید از supervisor استفاده کنم ولی من تا حال باهاش کار نکردم و نمیدونم چی به چیه!
راه اسونتریم هست برای این کار؟ دوستانی که این کارو انجام دادن راهنمایی کن ممنون میشم


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

@miladparsi1070
سلام اول یه کرون جاب یک دقیقه ای در سرورتون به صورت زیر تعریف کنید

/usr/local/bin/php /home/myProject/public_html/core/artisan schedule:run >/dev/null 2>&1

بعد برید به آدرس App/console/kernel.php و در تابع schedule دستور زیر رو تعریف کنید

protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')->hourly();
        $schedule->command('queue:work --stop-when-empty')
            ->cron('* * * * *')
            ->withoutOverlapping(5);
    }

اینجوری همیشه صفهای شما فعاله و هیچ فشاری هم به سرور وارد نمیشه


عرفان همتی
تخصص : Backend Developer
@erfanhemmati 3 سال پیش مطرح شد
0

@miladparsi1070
سلام. شما عملا نمی‌تونید از supervisor روی هاست‌های اشتراکی استفاده کنید.
به جاش می‌‌تونید یه کرون جاب ست کنید که دستور php artisan queue:work رو هر یک دقیقه یکبار ران کنه.


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

@erfanhemmati

سلام اینکار رو نباید بکنید
چون کرون جاب هایی که فعالیت های زمان دار رو اجرا میکنند بعد از ۱ دقیقه بسته نمیشوند و بعد از گذشت ۱ ساعت حداقل ۶۰ تا فعالیت باز کرده حداقل باید اینکارو کنید

php artisan queue:work --once

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

@miladparsi1070
سلام اول یه کرون جاب یک دقیقه ای در سرورتون به صورت زیر تعریف کنید

/usr/local/bin/php /home/myProject/public_html/core/artisan schedule:run >/dev/null 2>&1

بعد برید به آدرس App/console/kernel.php و در تابع schedule دستور زیر رو تعریف کنید

protected function schedule(Schedule $schedule)
    {
        // $schedule->command('inspire')->hourly();
        $schedule->command('queue:work --stop-when-empty')
            ->cron('* * * * *')
            ->withoutOverlapping(5);
    }

اینجوری همیشه صفهای شما فعاله و هیچ فشاری هم به سرور وارد نمیشه


میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 3 سال پیش مطرح شد
0

@Rp76
یعنی من اینو توی ترمینال cpanel بزنم این دستور همیشه اجرا میشه؟ دقیق متوجه نشدم


میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 3 سال پیش مطرح شد
0

@erfanhemmati
اره این. اخرین راه گذاشته بودم
@sina.it91
من نمیدونم چجوری تو سرور کرون جاب درست کنم
اگه کامل راهنمایی کنید ممنون میشم چون حس میکنم مشکلم حل شه اینجوری
من کل پروژه رو توی یه فولدر به اسم خود پروژه ریختم. شرکتی که هستم اینجوری آپلود میکنن
الان من دستور اول رو کجا دقیقا بزنم؟؟


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

@miladparsi1070
تو cpanel بخش advanced باید یه چیزی به نام cron jobs داشته باشه
اونجا یه کرون جاب یک دقیقه ای تعریف میکنی و دستوری که گفتم (آدرس پروژه ی خودت) رو وارد میکنی
تو اینترنت سرچ کنی آموزشش هست


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

@Rp76

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

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

ممنون میشم توضیح بدید.


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

@mrmmg
@miladparsi1070

سلام این دستور که من گفتم هر دقیقه یک دستور رو اجرا میکنه
چرا از این دستور من استفاده کردم؟
اجرا کردن یک queue فعالیت زمان بری هست.
وقتی cron job این فعالیت رو صدا میزننه اون فعالیت تا جایی که امکانش باشه باز میمونه مگر این که به مشکلی بخوره یا سرور ریستارت بشه.
حالا اکر هر دقیقه این عمل انجام بشه کلی از منابع شمارو میگیره و سرور down میشه.


میلاد هدایت پور
تخصص : در حال پیشرفت
@miladparsi1070 3 سال پیش مطرح شد
0

@Rp76
مرسی از پاسخ خوبتون ممنون


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

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