ESC را فشار دهید تا بسته شود

رفع مشکل انتشار نوشته های زمان بندی شده در وردپرس

اگر از قابلیت انتشار خودکار (زمان بندی شده) نوشته ها در وردپرس استفاده کرده باشید یا با آن آشنا باشید میدانید که این ویژگی، برای سایت های محتوا محور چقدر کاربردی و جذاب است! در ادامه به بررسی و رفع ایراد عدم انتشار نوشته های زمان بندی شده در وردپرس خواهیم پرداخت.

آشنایی با رویداد های زمان بندی شده در وردپرس

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

زمان بندی نوشته ها در وردپرس میتواند به سایت های محتوا محوری که قصد دارند محتوا و مطالب خود را طبق یک زمان بندی دقیق و بصورت منظم منتشر کنند کمک بسیار زیادی بکند. به این صورت که محتوای سایت بصورت پیش نویس نوشته میشود و برای هر کدام یک زمان انتشار مشخص انتخاب میشود. پس از آن وردپرس در زمان مشخص شده محتوای مورد نظر را در سایت منتشر کرده و کاربران عادی میتوانند مطلب را مشاهده کنند.

نحوه عملکرد رویداد های زمان بندی شده در وردپرس

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

در واقع عملیات های زمان بندی شده در وردپرس بصورت خودکار توسط کران جاب سرور اجرا نمیشوند و توجه نکردن به این مسئله میتواند در روند اجرای رویداد های زمان بندی شده وب سایت تداخل ایجاد کند. در واقع وردپرس نمیتواند بصورت خودکار فرایند ها را اجرا کند و روش انجم این کار به شکل دیگری اتفاق می افتد.

فرض کنید شما یک پست در سایت خود قرار میدهید و تعیین میکنید که این پست باید ساعت 16 در سایت منتشر شود. وردپرس این زمان بندی شما را ذخیره میکند ولی نمیتواند بصورت خودکار آن را اجرا کند. در واقع وقتی ساعت از 16 میگذرد وردپرس آنقدر صبر میکند تا اولین کاربر از وب سایت شما بازدید کند. به محض بازدید کردن اولین کاربر از سایت یا بارگزاری یکی از صفحات وب سایت توابع زمان بندی وردپرس اجرا شده و بلافاصله پست شما منتشر میشود.

به عبارت دیگر با هر بار بازدید یک کاربر از سایت شما و بارگذاری یکی از صفحات سایت، وردپرس لیست رویدادهای زمان بندی شده در انتظار را بررسی میکند و اگر رویدادی نیاز به اجرا شدن داشته باشد آن را اجرا میکند.

در این حالت یک مشکل اساسی به وجود می آید.اینکه فرضا اگر از ساعت 16 (که زمان مورد نیاز انتشار پست است) تا مثلا ساعت 17 هیچکس از وب سایت شما بازدید نکند، پست شما منتشر نمی شود! در واقع این موضوع اصلی ترین عیب WP-Cron وردپرس است.

بنابراین اگر نیاز دارید که محتوای شما دقیقا در همان زمانی که تعیین کردید در سایت منتشر شود قابلیت کران پیشفرض وردپرس انتخاب مناسبی برای شما نیست!

معایب WP-Cron وردپرس

همانطورکه گفته شد، قابلیت WP_Cron در وردپرس یک عملکرد دقیق و زمان بندی شده نیست و بر اساس بازدید کاربر از وب سایت عمل میکند. به این نوع از کران اصطلاحا شبه زمان‌بندی (pseudo-cron) گفته میشود. عیب های اصلی این روش عبارتند از:

اجرا نشدن در صورت عدم بازدید از سایت

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

افزایش بار اضافی بر روی سرور

اگر بازدید سایت زیاد باشد، ممکن است کران جاب‌ها مکرراً اجرا شوند و باعث بار اضافی روی سرور شوند. بنابراین این روش برای سایت های با بازدید بسیار بالا هم مناسب نیست!

کمبود دقت در زمان اجرا

زمان اجرای کران جاب در این روش دقیق نیست و ممکن است تاخیر زیاد و اختلاف عمده ای بین زمان مورد انتظار برای انتشار و وقوع آن وجود داشته باشد

زمان اجرای کران جاب در این روش دقیق نیست و ممکن است تاخیر زیاد و اختلاف عمده ای بین زمان مورد انتظار برای انتشار و وقوع آن وجود داشته باشد

رفع مشکل انتشار نوشته های زمان بندی شده در وردپرس

برای رفع مشکل گفته شده در بالا و افزایش دقت فرایندهای زمان بندی شده در وردپرس میتوانید به روش های زیر عمل کنید:

روش اول – غیرفعال کردن WP-Cron و استفاده از کران جاب سرور

بهترین روش برای حل این مشکل، غیرفعال کردن WP-Cron و تنظیم یک کران جاب واقعی در سرور است. برای انجام این کار طبق روش زیر عمل کنید:

مرحله اول – WP-Cron را غیرفعال کنید

وارد فولدر اصلی پروژه در هاست خود شوید، فایل wp-config.php را ویرایش کرده و کد زیر را به آن اضافه کنید:

define('DISABLE_WP_CRON', true);

با این کار ویژگی پیشفرض WP-Cron در وردپرس غیرفعال میشود.

مرحله دوم – تنظیم کران جاب در سرور

وارد کنترل پنل هاست (یا SSH سرور) خود شده و یک کران جاب جدید بسازید. به عنوان مثال:

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

برای درک بهتر عبارت بالا به جدول زیر دقت کنید:

عبارتکاربرد
*/5 * * * *این عبارت دوره زمانی اجرای کران جاب را مشخص میکند. در این مثال کران جاب هر 5 دقیقه یکبار اجرا میشود
wget -q -O – https://example.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1این عبارت همان محتوای دستور کران جاب است. در این دستور به سرور گفته میشود که در بازه زمانی گفته شده یک درخواست به سمت سایت ارسال کند و فایل wp-cron.php را اجرا نماید تا دستورات زمان بندی شده اجرا شوند. (به جای example.com دامنه سایت خود را وارد نمایید)

دقت کنید که در مثال بالا، ما کران جاب را بر روی هر 5 دقیقه یکبار تنظیم کردیم. اگر این زمان را کمتر کنید (به عنوان مثال هر یک دقیقه یکبار) دقت کران جاب شما بیشتر میشود ولی فشار روی سرور افزایش میابد. بنابراین در انتخاب این زمان بندی دقت کنید. (برای آشنایی بیشتر با ساختار کران جاب و ساخت کران جاب اختصاصی خودتان اینجا کلیک کنید)

روش دوم – استفاده از افزونه‌های مدیریت کران جاب

افزونه‌هایی مثل WP Crontrol به شما امکان می‌دهند تا کران جاب‌های سایت خود را مدیریت کنید و بررسی کنید که آیا کران جاب‌ها به درستی اجرا می‌شوند یا نه. این روش به شما کمک میکند که تاخیر یا عدم اجرای کران جاب های سایت وردپرسی خود را بررسی و کنترل کنید.

روش سوم – انتقال وظایف سنگین به کران جاب‌های خارجی

اگر اجرای دقیق کران جاب ها برای شما خیلی مهم و حیاتی است، بهتر است به جای اتکا به کران جاب های سرور خودتان از سرویس های اجرا کننده خارجی کمک بگیرید. برای وظایف مهم و زمان‌بر (مانند ارسال ایمیل انبوه یا پردازش داده‌ها)، می‌توانید از سرویس‌های خارجی مثل EasyCron یا cron-job.org استفاده کنید.

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *