عنوان مقاله :

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

گردآوری و تالیف : امیررضا سیستانه ای
تاریخ انتشار : 14 شهریور 1396
دسته بندی ها : لاراول

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

تعریف وظایف

برای اینکه وظایفی که مدنظرتون هست رو بصورت زمان بندی شده انجام بدید دو راه وجود داره. یکی این هست که 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 ذخیره میشه. از این دو جا میتونید خطاهایی که ممکنه پیش بیاد رو رصد کنید.

مقالات پیشنهادی

بهترین پکیج های لاراولی – سری اول

پکیج ها قابلیت عملیاتی لاراول را افزایش می‌دهند و عملکرد آنرا بهبود می‌بخشند. پکیج ها میتوانند یک راه مناسب برای کار با تاریخ در پروژه باشد مثل پکیج C...

10 متد Collections کمتر شناخته شده ( اما بسیار جالب ) لاراول

به نظر من Eloquent لاراول یک ابزار عالی در لاراوله - احتمالا نیازی به تاکیید کردن من روی این مسئله نیست چون همه این مسئله رو میدونن . امروز میخوام لیس...

ابزاری برای ساخت سایت های چندزبانه در لاراول

laravel-translatable یک پکیج لاراولی برای مدل های قابل ترجمه است. هدفش حذف پیچیدگی دریافت و ذخیره سازی نمونه های مدل چندزبانه است. با این پکیج شما کمت...

بهترین پکیج های لاراولی - سری دوم

در سری قبل چند پکیج فوق العاده کارآمد برای لاراول معرفی کردیم در این مقاله هم یک سری پکیج شگفت انگیز بهتون پیشنهاد میدیم

دیدگاه های ارزشمند شما

برای ارسال نظر لازم است ابتدا وارد سایت شوید
هیچ دیدگاهی تا به این لحظه برای این موضوع ثبت نشده است