قبل از اینکه به هدف از این مقاله بپردازم ، در مورد سیستم زمانبندی افزونه به روزرسان قیمت دیجی اسکراپر صحبت خواهم کرد ، افزونه به روزرسان قیمت از سیستم کرون وردپرس استفاده می کند و تحت این سیستم تسک هایی که براش تعریف شده رو سر زمان مقرر اجرا می کند ، ولی این اجرا شدن تسک سر زمان تعریف شده نیازمند یک پیشنیازهایی است که قبل از هر چیز باید به نحوه ی اجرای تسک ها در کرون وردپرس بپردازیم.
بررسی اجمالی WP-Cron
Cron اختصار یافته کلمات Command Run On میباشد. کرون جاب یا Cron Jobs قابلیتی در سیستم های لینوکسی می باشد که وظیفه ی اجرای عملیاتی خاص در زمانبندی خاصی را به صورت کاملا اتوماتیک بر عهده دارد. این عملیات می تواند اجرای یک دستور یا Command و یا برنامه ی خاصی و یا اجرای یک اسکریپت باشد . با استفاده از کرون جاب به صورت کلی می توانید کار های روتین و تکراری را به سادگی و بدون دخالت کاملا اتوماتیک زمانبندی و اجرا نمایید .
کرون وردپرس (wp-cron) از نظر ماهیتی مشابه Cron است ، اما از نظر روش های بسیار مهمی متفاوت است.
تمامی برنامههای زمانبندی شده در وردپرس شامل ارسال پستهای زمانبندی شده و بروزرسانی پوستهها و افزونهها و ارسال ایمیلهای یادآوری، همگی توسط فایلی با نام wp-cron.php انجام میشوند.
WP-Cron چگونه شروع می شود؟
تفاوت عمده Cron و WP-Cron در نحوه اجرای WP-Cron است. Cron یک فرآیند سیستمی است که هر دقیقه اجرا می شود و به دنبال کارهایی می گردد که باید اجرا کند.WP-Cron ، چون یک سیستم مبتنی بر وب است ، تنها در صورتی که شخصی به سایت مراجعه کند ، می تواند اجرا شود.
مشکلات در سایتهای کم ترافیک
سایت های وردپرس با ترافیک کم ممکن است چون این قابلیت توسط بازدید کاربر فعال می شود ، حالت گذر از تسک را تجربه کنید. و اگر افرادی از سایت شما بازدید نکنند ، WP-Cron نمی تواند اجرا شود.
مشکلات در سایت های پر ترافیک
زمانی که بازدیدهای وبسایت افزایش یابد این کار میتواند عامل بروز مشکلات زیادی از جمله بالا رفتن لود سرور و افزایش منابع مصرفی اکانت و کندشدن سرعت بارگذاری وبسایت شود. دلیل آن نیز اشتباه WordPress در تشخیص این موضوع است که وقتی بازدیدکنندهای به وبسایت مراجعه کرد، آیا زمان انجام کاریست؟ جواب مشخص است. خیر!
مدیریت wp-cron به صورت خارجی
اگر به دنبال کنترل بیشتر بر روی کارهای cron سایت خود هستید ، یا نمی خواهید WP-Cron وظایف داخلی را انجام دهد ، می توانید به جای آن از cron های خارجی استفاده کنید. این راه حل ، مشکلات مورد بحث در بالا برای سایت های پر رفت و آمد و کم ترافیک را حل می کند.
افزودنی به روزرسان قیمت دیجی اسکراپر از wp-cron استفاده می کند
با توجه به اینکه افزونه به روزرسان قیمت از کرون وردپرس استفاده می کند و با صحبت هایی که در بالا در مورد کرون وردپرس شد و مشکلاتی که کرون وردپرس با سایت های کم بازدید دارد و از آنجایی که اجرای تسک های کرون از قبیل تسک هایی که برای به روزرسانی محصولات توسط این افزونه تعریف می شوند وابسته به بازدید سایت است، باید راه حلی اتخاذ شود که این وابستگی به بازدید برداشته شود که همانطور که در بالا ذکر شد باید کرون وردپرس به صورت خارجی مدیریت شود.
مرحله اول: غیرفعال کردن اجرای خودکار
ابتدا اجرای فایل wp-cron.phpرا با ایجاد تغییراتی در فایل wp-config.php غیرفعال میکنیم:
- فایل wp-config.php را ویرایش کنید.
- به انتهای این فایل رفته و در حوالی خط 37 کد زیر را وارد کنید:
define('DISABLE_WP_CRON', true);
- 3- تغییرات را ذخیره کنید.
حالا دیگر هر بار که بازدیدکنندهای به وبسایت شما مراجعه کند، فایل wp-cron.php اجرا نخواهد شد.
مرحله دوم: افزودن کرون بصورت دستی
سرویس های رایگان
پس از غیرفعال کردن WP-Cron ، به سرویس ای نیاز دارید که با فواصل منظم یک URL را صدا کند.
ساده ترین راه برای انجام این کار ، ایجاد یک حساب کاربری با سرویس رایگان cron است:
هر یک از خدمات فوق کار را انجام می دهد.
اکنون مجبور خواهید بود با استفاده از یکی از خدمات فوق ، آن URL خود را فراخوانی کنید. در اکثر آنها ، به همین راحتی قابل انجام است:
- ایجاد حساب کاربری
- ایجاد یک جاب که https://yourdomain.tld/wp-cron.php?doing_wp_cron را فراخوانی کند
در دایرکت ادمین دستور به صورت زیر می تونه باشه
/usr/bin/wget -q -O /dev/null “yourdomain.tld/wp-cron.php?doing_wp_cron” >/dev/null 2>&1
نکته ! به جای yourdomain.tld دامنه خودتان را جایگزین کنید.
ایجاد یک کار واحد که اسکریپت wp-cron.php سایت شما را در هر دقیقه صدا کند ، تمام آنچه چیزی است که شما نیاز دارید. و WP-Cron مراقب بقیه خواهد بود.
مهم است که مقداری را به متغیر do_wp_cron کوئری اضافه نکنید و می بایست خالی باشد تا کرون وردپرس به درستی کار کند.
استفاده از سرور خودتان
اگر به پنل هاست خودتان دسترسی دارید ، می توانید از سرویس cron برای اجرای اسکریپت wp-cron.php استفاده کنید. پس این تنظیمات را مطابق راهنمای زیر ایجاد میکنیم:
- وارد cPanel شوید.
- 2- از بخش Advanced وارد Cron Jobs شوید.
- سپس از بخش Common Settings گزینه Once Per Minute را برگزینید.
4 – سپس در بخش Command کد زیر را قرار داده و روی Add New Cron Job کلیک کنید.
wget -q -O – http://yordomain.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
از این پس کنترل فایل wp-cron.php در دستان شماست و میتوانید اجرای آن را به هر نحو دلخواه تغییر دهید.