Task های زمان بندی شده در لاراول (هاست های اشتراکی)
ﺯﻣﺎﻥ ﻣﻄﺎﻟﻌﻪ: 3 دقیقه

Task های زمان بندی شده در لاراول (هاست های اشتراکی)

در این مقاله میخواهیم به مبحث مهمی بپردازیم که احتمالا بارها بهش برخوردید و ممکنه نتونسته باشید به درستی از اون استفاده کنید. این مبحث "انجام وظایف زمان بندی شده" هست که دو بخش عمده داره. یکی از بخش هاش در خود لاراول کدنویسی میشه و یک بخش مهم دیگه ی اون باید در سرور احتمالا لینوکسی انجام بشه. و این بخش دوم وقتی به مشکل میخوره که شما از هاست های اشتراکی استفاده کنید. که البته معمولا برای وبسایت های عادی از این هاست ها استفاده میشه.

تعریف وظایف

برای اینکه وظایفی که مدنظرتون هست رو بصورت زمان بندی شده انجام بدید دو راه وجود داره. یکی این هست که command سفارشی خودتون رو بسازید و در هاست مورد نظر بگید اون دستور اجرا بشه و یک راه هم اینه که Task مورد نظرتون رو تعریف کنید و با استفاده از دستور زیر اون رو اجرا کنید :

php artisan schedule:run

که ما در ادامه چگونگی اجرای دستور در هاست اشتراکی رو مطرح می کنیم.

برای اینکه وظیفه ی مورد نظر رو تعریف کنید باید به فایل App\Console\Kernel رفته و کدی شبیه این وارد کنید :

$schedule->call(function () {
    // ... your code
})->daily();

همینطور که از ظاهر امر پیداست شما میتونید وظیفه مورد نظر رو طبق زمان بندی دلخواه تون اجرا کنید مثلا :

  • هر ساعت : ()hourly
  • هر روز : ()daily
  • هر روز ساعت 9:30 : (daily('09:30
  • هر هفته : ()weekly
  • هر ماه : ()monthly
  • دستور سفارشی : ('* * * * *')cron
  • و دستورات مشابه

و حتی میتونید به صورت ترکیبی عمل کنید :

$schedule->command('theTask')

         ->weekly()

         ->mondays()

         ->at(12:30);

یا حتی شرط تعیین کنید :

$schedule->command('table:clean')

          ->daily()

          ->when(function() {

             return SMS::isWorkingFine();

          });

بعد از اینکه تعاریف دستور/دستورهای شما مشخص شد, اگر در حالت local هستید با اجرای دستور زیر زمان بندی شما چک میشه :

php artisan schedule:run

اما اگر در هاست اشتراکی لینوکس بخواهید این رو اجرا کنید باید به مبحث cron job ها بپردازیم. 

آموزش استفاده از دستورات artisan در هاست

ابتدا وارد کنترل پنل هاست (در اینجا از cpanel استفاده می کنیم) شوید و از بخش ADVANCED مورد Cron jobs رو انتخاب کنید. (اگر تم پنل شما فرق میکنه میتونید بالا سمت راست cron jobs رو جستجو کنید)

حالا برای افزودن یک cron جدید به بخش Add new cron job رفته و Common settings رو بطور دلخواه انتخاب کنید. (اینجا ما یکبار در هر دقیقه رو انتخاب کردیم)

حالا نوبت نوشتن دستور مورد نظر هست. معمولا در سرویس هاست اشتراکی این دستور به شکل زیر هست اما اگر جواب نداد به سرویس هاست یک تیکت بزنید :

/usr/local/bin/php   /home1/username/public_html/artisan schedule:run 1>> /dev/null 2>&1

بخش اول دستور مربوط به نرم افزار php هست که سرور در اختیار cron job قرار داده. این بخش احتمال داره شما رو به مشکل بیاندازه چون اگر ورژن php اون کمتر از 5٫6 باشه به خطا برمیخورید. پس در اینصورت با پشتیبانی هاست در تماس باشید. 

بخش /home1/username/public_html/artisan آدرس فایل artisan پروژه شماست. که در صفحه اصلی cpanel تا public_html رو میتونید پیدا کنید.

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

خطایابی

خطاهای احتمالی رو میتونید از دو بخش بررسی کنید. اولی در مسیر اصلی هاست (فایل منیجر) و فایل error_logs هست. و دومی هم در مسیر پروژه ی لاراولی storage/logs ذخیره میشه. از این دو جا میتونید خطاهایی که ممکنه پیش بیاد رو رصد کنید.

چه امتیازی برای این مقاله میدهید؟

خیلی بد
بد
متوسط
خوب
عالی
4.17 از 12 رای

دیدگاه و پرسش

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

در حال دریافت نظرات از سرور، لطفا منتظر بمانید

در حال دریافت نظرات از سرور، لطفا منتظر بمانید