وبلاگ نت‌آرامآموزش، تجربه و راهکارهای زیرساخت

نوشتهٔ زمان‌بندی‌شدهٔ وردپرس منتشر نمی‌شود؟ WP-Cron را درست کنیم

نوشتهٔ زمان‌بندی‌شده وردپرس منتشر نمی‌شود؟ منطقهٔ زمانی، WP-Cron، خطای loopback و cron واقعی cPanel را قدم‌به‌قدم بررسی کنید.

انتشار:
توسط تیم فنی نت‌آرام
۵ دقیقه زمان مطالعه
۰ دیدگاه
محتوای تخصصی، ساده و کاربردی
هماهنگ با هویت حرفه‌ای نت‌آرام
بازگشت به لیست مقالات
تصویر شاخص مقاله نوشتهٔ زمان‌بندی‌شدهٔ وردپرس منتشر نمی‌شود؟ WP-Cron را درست کنیم در وبلاگ نت‌آرام
محتوای آموزشی وبلاگ نت‌آرام
اگر نوشتهٔ وردپرس در ساعت تعیین‌شده منتشر نمی‌شود و وضعیت آن Missed schedule است، احتمالاً کار زمان‌بندی به‌موقع اجرا نشده است. وردپرس برای بسیاری از کارهای زمان‌بندی از WP-Cron استفاده می‌کند؛ این بخش با هر بازدید بررسی می‌کند آیا کاری موعدش رسیده است یا نه. پس در سایتی که بازدید کمی دارد، کار ممکن است تا بازدید بعدی عقب بیفتد. این رفتار با cron واقعی سرور فرق دارد.

اول وضعیت نوشته و ساعت سایت را ببینید

از نوشته‌ها → همهٔ نوشته‌ها نوشتهٔ موردنظر را باز کنید. وضعیت و تاریخ برنامه‌ریزی‌شده را بخوانید و مطمئن شوید دکمهٔ انتشار زمان‌بندی واقعاً ثبت شده است. گاهی پس از بستن ویرایشگر، نوشته هنوز پیش‌نویس می‌ماند. تاریخ و ساعت را با تنظیمات → عمومی → منطقهٔ زمانی مقایسه کنید. انتخاب نام شهر معمولاً از واردکردن عدد ثابت UTC+3:30 بهتر است، چون ساعت رسمی ممکن است تغییر کند.
یک نوشتهٔ آزمایشی با زمان چند دقیقه بعد بسازید و وضعیت را ببینید. اگر فقط یک نوشته جا مانده، ممکن است خود نوشته یا افزونهٔ مربوط به آن ایراد داشته باشد. اگر همهٔ زمان‌بندی‌ها عقب‌اند، اجرای WP-Cron یا درخواست loopback سایت را بررسی کنید. نوشتهٔ آزمایشی را بعد از پایان آزمون پاک کنید تا در سایت نماند.

فرق WP-Cron و cron واقعی چیست؟

WP-Cron منتظر ساعت دقیق سرور نمی‌ماند؛ هنگام بازشدن صفحه، فهرست کارهای موعدرسیده را می‌بیند و اجرا را راه می‌اندازد. بنابراین اگر سایت ساعت 10:00 کار دارد ولی بازدید بعدی 10:20 است، کار ممکن است دیر انجام شود. مستند Cron وردپرس این تفاوت را توضیح می‌دهد. همین سازوکار برای بسیاری از سایت‌ها کافی است و لازم نیست همیشه cron سرور بسازید.
در پیشخوان به ابزارها → سلامت سایت → وضعیت بروید و پیام خطا دربارهٔ درخواست loopback یا رویداد زمان‌بندی‌شده را بخوانید. Loopback یعنی سایت یک درخواست به خودش بفرستد تا کار پس‌زمینه شروع شود. اگر پیام خطا دارد، متن و زمان آن را یادداشت کنید. افزونهٔ امنیتی، مسدودشدن درخواست از سمت فایروال یا پاسخ نادرست HTTPS می‌تواند این ارتباط را خراب کند.
اگر SSH و WP-CLI دارید، از پوشهٔ وردپرس اجرا کنید:
کد / دستورwp cron test wp cron event list
فرمان اول تلاش می‌کند سازوکار اجرا را آزمایش کند؛ دومی فهرست رویدادهای زمان‌بندی‌شده را نشان می‌دهد. اگر WP-CLI نصب نیست، برای این آزمون لازم نیست در هاست اشتراکی آن را نصب کنید؛ از سلامت سایت و گزارش میزبان استفاده کنید. راهنمای WP-CLI برای wp cron خروجی و دستورهای موجود را توضیح می‌دهد.

اگر نیاز به زمان دقیق دارید، cron واقعی بسازید

اگر سایت بازدید کمی دارد یا انتشار دقیق مهم است، در cPanel بخش Cron Jobs را باز کنید. برای اجرا هر پنج دقیقه، زمان اجرا را */5 * * * * بگذارید. در بخش فرمان می‌توانید از درخواست HTTPS به فایل WP-Cron استفاده کنید:
کد / دستورcurl -fsS 'https://example.com/wp-cron.php?doing_wp_cron' >/dev/null 2>&1
دامنهٔ خود را جایگزین کنید. اگر هاست curl ندارد، از روش پیشنهادی خود میزبان برای wget یا PHP CLI استفاده کنید؛ مسیر PHP و پوشهٔ سایت در حساب‌ها متفاوت است. ابتدا job را ذخیره کنید و در بخش Cron Jobs زمان اجرای بعدی را ببینید. از میزبان بپرسید آیا خروجی ایمیل cron را می‌توان خاموش یا به نشانی فنی ارسال کرد تا هر پنج دقیقه صندوق پر نشود.
پس از نصب job، چند دقیقه منتظر بمانید و نوشتهٔ آزمایشی را بررسی کنید. وقتی مطمئن شدید cron واقعی اجرا می‌شود، می‌توانید WP-Cron را از بازدیدهای عادی جدا کنید. WordPress در مستند وصل‌کردن WP-Cron به زمان‌بند سیستم ثابت DISABLE_WP_CRON را نشان می‌دهد. این خط را در wp-config.php فقط بعد از کارکردن job، و فقط یک‌بار اضافه کنید؛ اگر cron واقعی هنوز درست نیست، خاموش‌کردن WP-Cron ممکن است همهٔ کارهای زمان‌بندی را متوقف کند.

اگر رویدادها زیاد می‌شوند یا چند بار اجرا می‌شوند

در فهرست رویدادهای cron، نام hook و زمان اجرای بعدی را ببینید. افزونه‌ای که پس از هر بار فعال‌شدن همان کار را دوباره زمان‌بندی می‌کند ممکن است رویدادهای تکراری بسازد. خودسرانه همهٔ رویدادهای ناشناس را حذف نکنید؛ ممکن است کارهای پرداخت، ایمیل یا بکاپ باشند. نام hook، افزونهٔ سازنده و تعداد تکرار را ثبت کنید و از سازنده یا میزبان کمک بگیرید.
همزمان چند روش اجرا نسازید: افزونهٔ زمان‌بندی، WP-Cron بازدیدمحور و cron واقعی می‌توانند یک کار را بیش از یک بار اجرا کنند. برای نمونه، ارسال دوبارهٔ ایمیل یا پردازش سفارش ممکن است مشتری را گیج کند. روش اصلی را مشخص کنید و پس از تنظیم، فهرست رویدادها و نتیجهٔ یک کار آزمایشی را بررسی کنید.

پایان کار را با یک نوشتهٔ بی‌خطر بسنجید

یک نوشتهٔ آزمایشی برای چند دقیقه بعد تنظیم کنید، پنجره را ببندید و زمان انتشار را صبر کنید. وضعیت باید از زمان‌بندی به منتشرشده تغییر کند و صفحهٔ عمومی نوشته باز شود. پس از تست، پیش‌نویس آزمایشی را حذف کنید. اگر کار منتشر نشد، زمان اجرا، پیام سلامت سایت و خروجی cron را برای میزبان بفرستید؛ رمز، کوکی یا محتوای خصوصی را نفرستید.
تنظیم ساعت درست، شناخت تفاوت WP-Cron و cron سرور و یک job سالم معمولاً علت را روشن می‌کند. اگر خطای بازدید و اجرای پس‌زمینه هم‌زمان دارید، مقالهٔ تشخیص قطعی مشکل سایت کمک می‌کند پاسخ سرور و خود برنامه را جدا کنید.
اشتراک‌گذاری:
لینکدینتلگرامایکس

دیدگاه‌ها (۰)

دیدگاه‌های تاییدشده و پاسخ‌های تیم نت‌آرام