Cron Job ها

(Cron Jobs)

گاهی اوقات نیاز است کار خاصی در زمان خاصی و یا به صورت دوره‌ای انجام شود، مثلا تهیه‌ی فایل پشتیبان از پایگاه داده، ارسال ایمیل و خبرنامه و کارهایی نظیر این. برای تعریف کران‌جاب‌های‌تان، می‌توانید فیلدی به نامcronرا به فایل liara.json برنامه‌ی‌تان اضافه کنید.

{
  "cron": [
    "* * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1"
  ]
}

همان‌طور که مشاهده می‌کنید، فیلدcronیک آرایه است و این یعنی می‌توانید یک یا چند کران‌جاب تعریف کنید. بعد از تنظیم فایل liara.json، باید دستور liara deployرا اجرا کنید تا تغییرات‌تان روی سرور اعمال شود و jobهای‌تان اجرا شوند. در قسمت لاگ‌ها هم هر زمان که یک job اجرا شود، لاگ‌های مختص به‌آن‌ها نمایش داده می‌شود.

بعد از اتمام فرایند استقرار، jobهایی که تعریف کرده‌اید را می‌توانید در صفحه‌ی تنظیمات مشاهده کنید:

بخش Cron Job ها

در حال حاضر، پلتفرم‌های زیر از این قابلیت پشتیبانی می‌کنند:

  • Laravel
  • PHP
  • Django
  • Flask
برای پلتفرم NodeJS، می‌توانید از پکیج‌هایی مانند Cron ،Croner و یا Agenda استفاده کنید.

بازه‌های زمانی رایج

برای تعریف هر Job، ابتدا لازم است که زمان اجرای آن را تعریف کنید. در Cron Job، تعریف زمان نحوه‌ی نگارش خاصی دارد که در زیر چند نمونه‌ی پر استفاده را عنوان کرده‌ایم:

با کمک وب‌سایت crontab.guru می‌توانید زمان دلخواه‌تان را بسازید.

نمونه‌ی Cron Job برای پلتفرم PHP

{
  "cron": [
    "0 1 * * * cd $ROOT && php update_price.php >> /dev/null 2>&1"
  ]
}

در نمونه‌ی بالا، یک اسکریپت با نام‌هایupdate_price.phpدر ریشه‌ی برنامه داریم که هر روز ساعت یک بامداد اجرا می‌شود.

نمونه‌ی Cron Job برای پلتفرم Django

{
  "cron": [
    "0 0 * * 0 cd $ROOT && python3 manage.py remove-old-emails >> /dev/null 2>&1"
  ]
}

در نمونه‌ی بالا، یک دستور دلخواه مدیریتی به‌جنگو با نامremove-old-emailsاضافه کرده‌ایم که هر هفته اجرا شود. در لینک زیر، می‌توانید مستندات مربوط به ساخت دستورات مدیریتی دلخواه مانندremove-old-emailsرا مطالعه کنید: مستندات ساخت دستورات دلخواه مدیریتی برای جنگو

نمونه‌ی Cron Job برای پلتفرم Flask

{
  "cron": [
    "0 0 * * 0 cd $ROOT && python3 job1.py",
    "0 0 * * 2 cd $ROOT && python3 job2.py"
  ]
}

در نمونه‌ی بالا، دو اسکریپت با نام‌هایjob1.pyوjob2.pyدر ریشه‌ی برنامه داریم که هفته‌ای یک‌بار اجرا می‌شوند.

;