سلام دوستان

بگذارید اول مفهوم کرون جاب یا Cron Job را با هم باز کنیم:

از کرون جاب برای زمانبندی و اجرای وظایف در دوره های مشخص زمانی استفاده میکنیم. مثلا پایان هر شب گزارش کلی از درآمد سایت، تعداد سفارشات و … به طور خودکار برای مدیر تلگرام یا پیامک شود. از این ویژگی روی سایت وردپرس هم استفاده میشود.مثلا برای زمانبندی نوشته برای انتشار، بررسی برای بروزرسانی وردپرس و افزونه های پشتیبان گیری که در طی بازه مشخص زمانی از سایت و داده های شما پشتیبان تهیه می کنند.

در وردپرس این عمل با سیستم WP-Cron وردپرس اجرا می شود که دقیقاً سیستم زمابندی کرون را شبیه سازی می کند. هر چند استفاده از این سیستم کرون بر اساس مقدار ترافیک سایت شما ممکن است سرعت بارگذاری را کاهش دهد. بنابراین در این مقاله قرار است که چگونگی غیر فعال کردن WP-Cron و سیستم جایگزین آن برای افزایش سرعت کارایی و بارگذاری وبسایت را بررسی کنیم.

مشکل کارایی و سرعت با WP-Cron

طی بررسی های انجام شده سایت هایی که ترافیک و بازدید بالایی دارند در بخش سیستم کرون با مشکل کارایی رو برو می شوند و این سیستم با اینکه مورد نیاز سایت ها هست اما باعث کاهش سرعت سایت می شود. اما چرا؟ اول از همه باید بدانید که سیستم WP-Cron در واقع یک کرون جاب واقعی که سیستم های لینوکس از آن استفاده می کنند نیست، بلکه سیستمی است شبیه سازی شده توسط وردپرس که عملکرد کرون را شبیه سازی می کند.

اجرای سیستم WP-Cron به صورت خودکار و مرتب نیست.فایل wp-cron.php به طور پیش فرض روی هر صفحه و هر درخواست اجرا می شود، سیستم WP-Cron در هر درخواست بررسی می کند که وقت اجرای کدام برنامه و دستور رسیده و که آنرا اجرا کند. اما دو مشکل عمده ایجاد می شود:

مشکل اول اینکه اگر درخواستی در زمان اجرای برنامه اجرا نشود یعنی هیچ صفحه ای باز نشود، آن زمانبندی و دستور اجرا نخواهد شد و اصطلاحاً زمانبندی از دست رفته است و عملا عملکرد کرون ما نقص دارد. این مشکل معمولا در سایت هایی که بازدید کم دارند و یا برنامه های زمانبندی آن ها در ساعاتی است که سایت بازدید ندارد.

مشکل دوم اینکه فکر کنین با هر درخواست کاربر قرار است سیستم WP-Cron وردپرس وظایف را بررسی و اجرا کند اولا که خود این بررسی کمی از حجم را گرفته و بار پردازشی ایجاد میکند و ثانیا فکر کنید در یک درخواست قرار است سیستم پردازشی با زمان بیش از یک دقیقه انجام دهد قطعا با این شرایط کاربر باید بیش از یک دقیقه منتظر بماند و این یعنی فاجعه!

رویکرد بهتر غیر فعال کردن سیستم WP-Cron و استفاده از سیستم Cron Job هاست یا سرور است. با این سیستم سایت خیلی سریع تر کار می کند و هیچ زمانبندی هم عقب نمی افتد و از دست نمی روند و بار پردازشی هم هیچگاه کاربر را درگیر و منتظر نمی گذارد.

چگونه WP-Cron وردپرس را غیر فعال کنیم

برای غیر فعال کردن WP-Cron کد زیر را به فایل wp-config.php وردپرس خود اضافه کنید یعنی دقیقا قبل از خط کامنت “That’s all, stop editing! Happy blogging.”. نکته: با این کار دیگر کرون وردپرس با لود صفحه و هسته وردپرس اجرا نمی شود و تنها راه اجرای آن فراخوانی فایل wp-cron.php است.

define('DISABLE_WP_CRON', true);

چگونه سیستم کرون هاست یا سرور را فعال کنیم

بعد از غیر فعال کردن سیستم WP-Cron باید سیستم زمابندی wp-cron.php سرور خود را راه اندازی کنید. به طور پیشفرض روی هاست شما هیچ زمابندی تعریف نشده مگر هاست های وردپرسی که به این نکته دقت کرده باشند و فایل wp-cron.php را در مدت زمان مشخص اجرا کنند. در غیر این صورت باید این کار را دستی انجام داد. پس این مقاله را ادامه می دهیم.

ایجاد Cron Job در CPanel

اگر از هاستی استفاده می کنید که از کنترل پنل CPanel بهره می برد بعد از اینکه سیستم کرون وردپرس یا WP-Cron را غیر فعال کردین گام های زیر را دنبال کنید.

گام اول

وارد CPanel شده و از بخش Advanced روی Cron Job کلیک کنید

Cron job در CPanel

بخش دوم

در زیر بخش Add New Cron Job، می توانید زمانبندی های مختلفی که از پیش تعریف شده را انتخاب کنید، مثلا دوبار در ساعت یا یک بار در هفته، ممکن است ارائه دهنده هاست شما به خاطر کارایی سرور خود محدودیتی در زمانبندی ها ایجاد کند. اینکه بازه زمانی سایت شما چند بار در دقیقه، ساعت یا روز یا هفته باشد بستگی به نوع و عملکرد سایت شما دارد. مقدار معمول برای هاست های اشتراکی دو بار در ساعت است.

تنظیمات Cron job در CPanel

گام سوم

دستور زیر را اضافه کنید. اما دامنه خود را با domain.com جایگزین کنید. این دستور می تواند بر اساس اینکه هاست شما چطور تنظیم شده کمی متفاوت باشد. بعد روی دکمه Add New Cron Job کلیک کنید

wget -q -O - https://domain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
افزودن دستور به Cronjob در Cpanel

دقت کنید که عبارت >/dev/null 2>&1 که بخشی از دستور بالا است برای جلوگیری از ارسال ایمیل اطلاع رسانی از اجرای کرون است.

استفاده از راهکارخارجی برای زمانبندی کرون

اگر با تنظیم گرون جاب روی سرور و یا هاست خود راحت نیستید و یا ارائه دهنده هاست شما اجازه دسترسی به شما را نمی دهد می توانید از راهکار خارجی مثل سایت EasyCron استفاده کنید.

منبع: کینستا