در توسعه وب مدرن، اتوماسیون وظایف نقشی کلیدی در مدیریت سرورها، همگام سازی دیتابیس ها و به روزرسانی پلتفرم ها دارد. زمان بندی (Scheduling) در سیستم عامل های مبتنی بر لینوکس و یونیکس به شما اجازه می دهد وظایف مختلف (مثل اجرای اسکریپت های Node.js، درخواست های API در Next.js یا کوئری های دیتابیس) را در زمان های دقیقی که برایش تعریف می کنید، به صورت کاملا خودکار در پس زمینه اجرا کنید.
بسیاری از توسعه دهندگان این دو اصطلاح را به جای هم استفاده می کنند، اما در معماری سرور تفاوت معنایی و عملکردی مشخصی دارند:
crontab نام دستوری در محیط ترمینال است که با آن این فایل را ویرایش، مشاهده یا مدیریت می کنید. سیستم عامل با خواندن کرون تب متوجه می شود چه وظیفه ای (کرون جاب) در چه زمانی باید اجرا گردد.
یک دستور زمان بندی از ۵ ستاره تشکیل شده است که هر کدام با یک فاصله از هم جدا شده اند و نماینده یک واحد زمانی مشخص هستند. ترکیب این ستاره ها زمان دقیق اجرای دستورات را مشخص می کند:
برای ایجاد زمان بندی های پیچیده تر، لینوکس چند کاراکتر ویژه در اختیار ما قرار می دهد که شناخت آن ها برای نوشتن اسکریپت های بهینه تر بسیار مهم است:
1,3,5 در بخش روزهای هفته یعنی دوشنبه، چهارشنبه و جمعه.9-17 در بخش ساعت یعنی هر ساعت از ۹ صبح تا ۵ عصر.*/15 در بخش دقیقه یعنی هر ۱۵ دقیقه یک بار.به جای درگیری با اعداد و ساختارهای پیچیده، می توانید از کلمات کلیدی استاندارد زیر برای زمان بندی های روتین استفاده کنید:
اجرای دستور سر هر ساعت — دقیقا زمانی که دقیقه به صفر می رسد.
اجرای دستور هر روز نیمه شب — مناسب برای تولید گزارش ها یا آپدیت سورس کدهای گیتهاب.
اجرای دستور هر یکشنبه نیمه شب — ایده آل برای تسک های پاک سازی هفتگی دیتابیس.
اجرای دستور فقط یک بار پس از بوت سیستم — کاربردی برای راه اندازی مجدد سرویس های Node.js.
نحوه تعریف این زمان بندی ها بسته به محیط هاستینگ شما متفاوت است.
در سرورهای اوبونتو یا لینوکسی، مدیریت این تسک ها از طریق ابزار ترمینال انجام می شود:
crontab -e: باز کردن فایل زمان بندی برای ویرایش.crontab -l: مشاهده لیست تمام وظایف فعال.crontab -r: حذف کامل تمام وظایف کاربر فعلی.برای پشتیبان گیری خودکار از دیتابیس با ابزار pg_dump در ساعت ۲:۳۰ بامداد هر روز و ذخیره آن با تاریخ همان روز در سرور اختصاصی:
در هاست های مبتنی بر سی پنل نیازی به محیط ترمینال نیست. شما می توانید از رابط کاربری استفاده کنید:
curl یا مسیر مفسر PHP/Node).در معماری های Serverless و فریم ورک هایی مانند Next.js، سرور همیشه روشنی وجود ندارد. در اینجا، پلتفرم ها به صورت نیتیو یک آدرس URL یا وب هوک شما را در زمان های تعیین شده صدا می زنند.
در ورسل نیازی به تنظیمات سروری نیست. یک فایل vercel.json در ریشه پروژه خود ایجاد کنید:
در پلتفرم رندر، شما از پنل کاربری یک سرویس جدید از نوع Cron Job می سازید و دستور اجرای اسکریپت خود را به صورت مستقیم وارد می کنید:
یکی از بهترین روش های رایگان برای تریگر کردن API های شما استفاده از ابزار CI/CD گیتهاب است. فایلی در مسیر .github/workflows/cron-job.yml بسازید:
اگر هاستینگ شما از کرون پشتیبانی نمی کند، وب سایت cron-job.org یک سرویس قدرتمند و رایگان است. کافیست ثبت نام کنید، URL روت API پلتفرم خود را وارد کنید، هدرهای لازم را تنظیم کنید و مشخص کنید در چه فواصل زمانی این آدرس فراخوانی شود.
وقتی در معماری ابری کار می کنید، آدرس API شما در دسترس عموم است. برای جلوگیری از اجرای دستی و سواستفاده از منابع، رعایت امنیت الزامی است.
همیشه یک توکن یا کلمه عبور مخفی را در هدر ریکوئست تنظیم کنید و در بک اند آن را بررسی نمایید:
در لینوکس، اگر اسکریپت با خطا مواجه شود در پس زمینه گم می شود. با اضافه کردن 2>&1 هر دو نوع خروجی و خطا را درون یک فایل ذخیره کنید: