
برای رفع صف Pending یا Failed ووکامرس، ابتدا باید مشخص شود کدام کار، متعلق به کدام افزونه و به چه دلیل متوقف شده است. حذف همه کارهای صف، درمان کندی نیست؛ ممکن است پردازش سفارش، تمدید اشتراک یا همگامسازی موجودی را از بین ببرد. Action Scheduler سامانه اجرای کارهای پسزمینه است و وضعیت هر کار، بخشی از شواهد عیبیابی فروشگاه محسوب میشود.
این راهنما از بررسی کمخطر شروع میکند و به اجرای محدود، پایش و جلوگیری از تکرار مشکل میرسد. برای تغییرات حساس، بکاپ قابل بازیابی و محیط آزمایشی لازم است. استفاده از وردپرس مدیریتشده پاستا میتواند مدیریت منابع و محیط اجرا را سادهتر کند، اما خطای منطق یک افزونه را خودکار اصلاح نمیکند.
Action Scheduler چیست و چه چیزی را در صف میگذارد؟
Action Scheduler کتابخانهای برای زمانبندی و اجرای کارهای پسزمینه وردپرس است. ووکامرس و افزونههای دیگر از آن استفاده میکنند، اما هر کاری که در فهرست دیده میشود الزاماً از هسته ووکامرس نیست. نام Hook و Group معمولاً سرنخ مالک کار را میدهند. پیش از هر اقدام، افزونه مسئول و اثر تجاری کار را مشخص کنید.
یک فروشگاه ممکن است کار ارسال اعلان، آمادهسازی داده گزارش یا ارتباط با سرویس بیرونی داشته باشد. بعضی کارها بیخطر و قابل تکرارند؛ بعضی دیگر اثر خارجی ایجاد میکنند. اگر کار پس از تماس موفق با سرویس بیرونی قطع شده باشد، ثبت وضعیت شکست الزاماً به معنی انجامنشدن آن اثر نیست. همین نکته دلیل احتیاط در Retry پرداخت یا پیامک است.
معنی Pending، In-progress و Failed
| وضعیت | برداشت درست | بررسی بعدی |
|---|---|---|
| Pending | کار هنوز کامل نشده؛ ممکن است موعدش نرسیده باشد | زمان برنامهریزی و سن کارهای سررسیدگذشته |
| In-progress | کار برای اجرا برداشته شده است | زمان شروع، لاگ و وضعیت پردازش مرتبط |
| Failed | سامانه نتوانسته پایان موفق را ثبت کند | پیام خطا و اثر احتمالی در سرویس مقصد |
| Complete | چرخه کار با موفقیت گزارش شده است | تطبیق نتیجه واقعی در سناریوی حساس |
بالا بودن تعداد Pending بهتنهایی نشانه خرابی نیست. هزار کار برای آینده ممکن است طبیعی باشد، ولی چند کار مربوط به سفارش که ساعتها از موعدشان گذشته مهماند. سن قدیمیترین کار آماده اجرا و روند رشد آن، از تعداد خام صف برای تشخیص عقبافتادگی مفیدتر است.
۱. شواهد را پیش از تغییر ثبت کنید
در پیشخوان، بخش Scheduled Actions را از مسیر ابزارهای ووکامرس یا ابزارهای وردپرس، متناسب با نسخه نصبشده، باز کنید. وضعیت، Hook، Group، زمان برنامهریزی و لاگ چند نمونه را ثبت کنید. تصویر عمومی نباید شماره سفارش، ایمیل یا اطلاعات مشتری را نشان دهد. برای پشتیبان، شناسه کار و بازه زمانی کافی است؛ داده حساس را فقط از کانال امن لازم ارسال کنید.
آغاز مشکل را با تغییرات اخیر مقایسه کنید: ارتقای افزونه، انتقال هاست، تغییر PHP، فعالسازی فایروال یا قطع یک سرویس بیرونی. اگر تنها یک Hook شکست میخورد، ابتدا همان افزونه را بررسی کنید. اگر همه گروهها عقب میمانند، مسیر اجرای زمانبند و ظرفیت میزبان محتملتر است. این تفکیک مانع تغییر همزمان چند بخش و از دسترفتن علت میشود.
قبل از هر اقدام اصلاحی، نتیجه فعلی کسبوکار را نیز ثبت کنید: سفارش پرداختشده است یا نه؟ موجودی تغییر کرده؟ پیام در مقصد ارسال شده؟ برای عملیات مالی، صورتحساب درگاه و وضعیت سفارش باید با هم بررسی شوند. جدول صف بهتنهایی مرجع قطعی دریافت یا بازپرداخت پول نیست.
۲. زمانبندی و درخواستهای داخلی را بررسی کنید
در تنظیم معمول وردپرس، اجرای برخی کارهای زمانبندیشده به فعالشدن WP-Cron وابسته است. فروشگاه کمبازدید، کش سنگین یا مسدودبودن درخواستهای داخلی میتواند روی زمان اجرای کار اثر بگذارد. مستندات WP-Cron نقطه شروع بررسی رفتار زمانبند است؛ Action Scheduler را با خود WP-Cron یکی نگیرید.
در Site Health خطاهای Loopback و رویدادهای زمانبندیشده را بررسی کنید. مسدودبودن درخواست داخلی ممکن است از Basic Auth محیط آزمایشی، قانون امنیتی یا مشکل DNS باشد. برای رفع آن، همه کنترلهای امنیتی را خاموش نکنید. درخواست دقیق و قاعده مسئول را پیدا کنید و استثنای محدود و قابل بازبینی بسازید.
اگر اجرای زمانبند را به Cron سیستم منتقل میکنید، ابتدا اجرای واقعی و ثبت زمان آخرین موفقیت را ثابت کنید؛ سپس درباره غیرفعالکردن فراخوانی پیشفرض تصمیم بگیرید. حذف مسیر قبلی قبل از آمادهشدن مسیر جدید، صف را کاملاً متوقف میکند. در سرویس مدیریتشده، روش زمانبندی مجاز را از امکانات همان پلن یا پشتیبانی دریافت کنید.