برای انتخاب کلیدenter انتخاب کنید یا برای لغو ESC فشار دهید.

آموزش جامع تنظیمات ناگهانی (Cron Job) در وردپرس؛ بهینه‌سازی Task Scheduling با WP-CLI و افزونه‌های مدیریت

سیستم ناگهانی (Cron Job) در وردپرس یک مکانیزم اساسی برای اجرای خودکار وظایف زمان‌بندی‌شده مانند انتشار پست‌ها، بکاپ‌گیری، به‌روزرسانی افزونه‌ها و پردازش ایمیل‌ها است. با این حال، Cron پیش‌فرض وردپرس (wp-cron.php) به دلیل وابستگی به traffic وب‌سایت، ممکن است در Sites با traffic کم یا زیاد دچار تأخیر یا بارگذاری مفرط شود. در این مقاله، به بررسی عمیق عملکرد wp-cron، جایگزینی آن با سیستم Cron واقعی سرور و بهینه‌سازی Task Scheduling از طریق WP-CLI و افزونه‌های مدیریت می‌پردازیم.

۱. چگونه wp-cron کار می‌کند و چه مشکلاتی دارد؟

wp-cron.php در هر بار بارگذاری صفحه توسط یک کاربر فعال می‌شود و وظایف زمان‌بندی‌شده را بررسی می‌کند. این روش در Sites با traffic ثابت کارآمد است، اما در Sites با traffic نوسانی می‌تواند باعث شود:

  • وظایف به تاخیر بیفتند (مثلاً انتشار پست زمان‌بندی‌شده با تاخیر ۱ ساعت اجرا شود).
  • در Sites با traffic بالا، هر بار بارگذاری صفحه یک فرآیند wp-cron اجرا شود و سرور را تحت فشار قرار دهد.
  • در Sites با traffic بسیار کم (مثلاً سایت‌های داخلی یا تستی)، wp-cron ممکن است چند روزی اجرا نشود.

برای رفع این مشکلات، بهترین روش غیرفعال کردن wp-cron و جایگزینی آن با یک Cron واقعی سرور (System Cron) است که به صورت منظم و مستقل از traffic وب اجرا می‌شود.

۲. غیرفعال کردن wp-cron و تنظیم Cron واقعی سرور

برای غیرفعال کردن wp-cron، خط زیر را در فایل wp-config.php قبل از خط «That’s all, stop editing!» اضافه کنید:

define('DISABLE_WP_CRON', true);

سپس، یک Job Cron واقعی در سرور خود تنظیم کنید. در سرورهای لینوکسی با دسترسی SSH، می‌توانید از crontab استفاده کنید. برای اجرای wp-cron.php هر ۱۵ دقیقه یک بار (فاصله پیشنهادی برای اکثر Sites):

*/15 * * * * wget -q -O - https://yourdomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1

در این دستور، yourdomain.com را با آدرس واقعی سایت خود جایگزین کنید. استفاده از wget با پارامتر -q -O – خروجی را خاموش می‌کند و فقط اجرا را تضمین می‌کند. پارامتر ?doing_wp_cron برای جلوگیری از تکرار اجرا توسط wp-cron (در صورت عدم غیرفعال کامل) ضروری است.

۳. مدیریت و depuraciónوظایف Cron با WP-CLI

WP-CLI یک ابزار خط فرمان قدرتمند برای مدیریت وردپرس است که امکان مشاهده، اجرا و حذف وظایف Cron را فراهم می‌کند. پس از نصب WP-CLI (دستور wp cli update برای به‌روزرسانی)، می‌توانید از دستورات زیر استفاده کنید:

  • نمایش لیست تمام وظایف زمان‌بندی‌شده:
    wp cron event list
  • اجرای یک وظیفه خاص (مثلاً hoo_publish_post):
    wp cron event run hoo_publish_post
  • حذف یک وظیفه:
    wp cron event delete hoo_publish_post
  • برنامه‌ریزی یک وظیفه جدید (مثلاً هر ۶ ساعت):
    wp cron event schedule hoo_custom_task "+6 hours" --recurrence=6hour

برای ایجاد یک récurrence سفارشی (مثلاً هر ۲ ساعت)، ابتدا آن را فیلتر کنید:

add_filter( 'cron_schedules', function( $schedules ) {
    $schedules['every_two_hours'] = array(
        'interval' => 7200,
        'display' => __( 'هر ۲ ساعت' ),
    );
    return $schedules;
});

wp_schedule_event( time(), 'every_two_hours', 'hoo_custom_task' );

4. بهینه‌سازی با افزونه‌های مدیریت Cron

اگر دسترسی به خط فرمان سرور محدود است یا ترجیح می‌دهید از رابط گرافیکی استفاده کنید، افزونه‌های زیر گزینه‌های عالی هستند:

  • WP Control: این افزونه رایگان اجازه می‌دهد تمام وقایع Cron را مشاهده، اجرا، ویرایش و حذف کنید. همچنین امکان افزودن وقایع جدید از طریق UI را فراهم می‌کند. پس از نصب، در مسیر Tools → Cron Events دسترسی پیدا خواهید کرد.
  • Advanced Cron Manager: علاوه بر ویژگی‌های WP Control، این افزونه امکان لاگ‌گذاری détaillé از اجرای وقایع، محدودیت تعداد اجراهای همزمان و تنظیم اعلان‌های ایمیل در صورت شکست وظیفه را دارد.
  • WP Crontrol (بهتر است با WP Control اشتباه نگیرید): رابط کاربری ساده‌ای برای مشاهده و مدیریت وقایع، مناسب برای مبتدیان.

استفاده از این افزونه‌ها به ویژه در محیط‌های هاستینگ اشتراکی که دسترسی SSH ندارید، بسیار مفید است. با این حال، برای بهینه عملکرد، ترکیب غیرفعال کردن wp-cron و استفاده از Cron واقعی سرور همچنان بهترین روش است.

۵. بهترین pratices برای بهینه‌سازی Task Scheduling

برای اطمینان از عملکرد بهینه و قابلیت اطمینان بالا، این pratices را دنبال کنید:

  • همیشه wp-cron را غیرفعال کنید و از Cron واقعی سرور استفاده کنید.
  • فاصله اجرای Cron را بر اساس نیاز سایت تنظیم کنید: برای سایت‌های خبری یا فروشگاهی که وظایف حساسی دارند (مثلاً به‌روزرسانی موجودی)، هر ۵ تا ۱۵ دقیقه مناسب است. برای سایت‌های محتوایی با پست‌های کمتر، هر ۳۰ تا ۶۰ دقیقه کافی است.
  • از لاگ‌گیری برای depuración استفاده کنید. در wp-config.php، lines زیر را اضافه کنید تا خطاهای Cron در debug.log ذخیره شوند:
    define('WP_DEBUG', true);
    define('WP_DEBUG_LOG', true);
    define('WP_DEBUG_DISPLAY', false);
  • وقایع سنگین (مثلاً بکاپ‌گیری کامل یا واردات داده‌های بزرگ) را در ساعات کمトラфfic (مثلاً ۲ تا ۵ صبح) برنامه‌ریزی کنید.
  • قبل از تغییرات بزرگ در وقایع Cron، یک بکاپ کامل از دیتابیس بگیرید.

نتیجه‌گیری

بهینه‌سازی سیستم ناگهانی (Cron Job) در وردپرس نه تنها قابلیت اطمینان وظایف زمان‌بندی‌شده را افزایش می‌دهد، بلکه بار سرور را کاهش می‌دهد و از تأخیرهای ناخواسته جلوگیری می‌کند. با غیرفعال کردن wp-cron.predefinited و جایگزینی آن با یک Cron واقعی سرور، استفاده از WP-CLI برای مدیریت دقیق وقایع و بهره‌گیری از افزونه‌های کنترل Cron برای دسترسی آسان، می‌توانید اطمینان حاصل کنید که وظایف penting سایت شما به‌طور دقیق و زمانowym اجرا می‌شوند. این رویکرد به‌ویژه برای سایت‌های با traffic متغیر، فروشگاه‌های اینترنتی و پلتفرم‌های محتوایی که به به‌روزرسانی‌های منظم و قابل اعتماد نیاز دارند، ضروری است. با پیاده‌سازی مراحل изложen در این مقاله، سایت وردپرسی شما sẽ از یک سیستم Task Scheduling پایدار، سریع و حرفه‌ای بهره‌مند شود.