پرش به مطلب اصلی

Cron Job ها


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

برای استفاده از Cron Job ها کافیست یک فایل به نام cron-jobs در داخل ریشه اصلی برنامه تان ایجاد کنید و دستورات Cron Job خود را داخل آن قرار دهید. با این کار هربار که سرویس شما ری استارت شود Cron Job سرویس تغییرات شما را اعمال خواهد کرد.

Cron Jobsها در سرویس‌های میزبانی آسان

برای استفاده از Cron Job در سرویس‌های میزبانی آسان می‌بایست فایل cron-jobs را در مسیر اصلی پروژه /app ایحاد کنید. مسیر کامل فایل به این شکل خواهد بود:

/app/cron-jobs
توجه

در سرویس‌های php و laravel مسیر اصلی پروژه برابر است با /var/www/html.

نمونه فایل cron-jobs:

* * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1
توجه

بعد از تنظیم فایل، برای شناسایی کرون جاب توسط برنامه، سرویس خود را ری‌استارت نمایید.

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

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

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

* * * * * cd /var/www/html && php artisan schedule:run >> /dev/null 2>&1

با استفاده از کامند بالا، scheduler لاراول هر دقیقه اجرا می شود.

Cron Jobها در سرویس داکر

ایجاد Cron Job در سرویس Docker چابکان روش متفاوتی دارد که در ادامه به توضیح آن می‌پردازیم.

برای استفاده از Cron Job در سرویس‌ Docker می‌بایست فایل cron-jobs را در مسیر دلخواه ایجاد کنید.

نکته

در سرویس‌ Docker فایل cron-job را با هر نام و در هر مسیر دلخواهی می‌توانید ایجاد کنید.

نمونه فایل cron-jobs

    * * * * * echo "The Docker cronjob ran at $(date)" >> /cron.log 2>&1

توجه

دقت کنید که در انتهای فایل cron-jobs باید یک خط خالی (newline) قرار داشته باشد.

پس از ایجاد فایل cron-jobs می‌بایست Dockerfile سرویس را تغییر دهیم.

FROM ubuntu:24.04

# Install cron
RUN apt-get update && \
apt-get install -y cron && \
rm -rf /var/lib/apt/lists/*

# Copy crontab definition
COPY ./cron-jobs /cron-jobs


# Install crontab
RUN crontab /cron-jobs

# Start cron
CMD ["cron", "-f"]

در این Dockerfile ابتدا برنامه cron را نصب می‌کنیم و فایل cron-jobs را در آن کپی می‌کنیم. سپس با دستور cron -f فرایند Cron Job را فعال می‌کنیم.