کندی پیشخوان وردپرس؛ ناگفته هایی که در هیچ سایت دیگری پیدا نمی کنید!
روش های غیر کاربردی که همه فریلنسر ها و سایت ها ارائه می دهند!
بنده مدیریت موب خرید هستم. حدود چند ماه پیش پیشخوان وردپرس با کندی بسیار شدیدی مواجه شده که به محض بازکردن صفحه مدیریت سایت، CPU هاست به 100/100 افزایش پیدا می کرد!
- مشکل جدید ووکامرس (کندی سایت و خطای 503 به محض باز کردن صفحه پیشخوان)
- افزایش ناگهانی سی پی یو هاست به 100/100
کندی از سمت Woocommerce بود. به محض باز کردن ووکامرس و یا صفحه محصولات، یا سایت از دسترس خارج می شد و یا باید چند دقیقه منتظر باز شدن صفحه می شدم! در ابتدا برای رفع این کندی توی اینترنت بسیار جستجو کردم. چیزهایی که توی اینترنت زیاد بود: (دلایل کندی پیشخوان)
- فعال بودن ردیابی Woocommerce (در قسمت پیکربندی->پیشرفته-> wommerce.com)
- نوشته های قدیمی (پیشنویس) و یا محصولات پیشنویس قدیمی
- هرزنامه ها (نظرات اسپم)
- تداخل قالب و یا افزونه با ووکامرس
استفاده از سرور اختصاصی
مشکل سایت بنده با هیچ کدوم از موارد بالا رفع نشد. با فریلنسر های زیادی صحبت کردم، هیچ راهی به ذهن هیچکدومشون نرسید. بعضی ها که تخصص کمی داشتند، گفتند بعلت استفاده از سرور اشتراکی چنین مشکلی به وجود اومده. بنده 8 سال هست که از سرور اشتراکی استفاده می کردم، چرا توی این مدت چنین اتفاقی نیفتاد؟!
علی ایحال سرور به اختصاصی با هارد SSD ارتقا یافت، اما همچنان مشکل وجود داشت! به این نتیجه رسیدم که بایستی خودم دست به کار بشم. تمام راهکار هایی که به ذهنم رسید رو در ادامه شرح می دم. مشکل کندی پیشخوان
- کندی بعلت جداول دیتابیس، مربوط به افزونه های حذف شده
- جداول دیتابیس مربوط به قالب های حذف شدهSQL
- حذف نشدن Transients های منسوخ شده (Expired) در MyphpAdmin
- حجیم شدن جدوال ووکامرس در دیتابیس Database
حذف تمامی سفارشات از طریق دیتابیس با دستور SQL
در ابتدا توسط دستور زیر تمامی سفارشات از دیتابیس و پیشخوان وردپرس حذف شد. روش کار: تمامی جدول های زیر توسط گزینه Empty خالی شد:
wp_woocommerce_order_itemmeta
wp_woocommerce_order_items
همچنین توسط دو دستور زیر تاریخچه سفارشات از جدول های wp_postmeta و wp_posts حذف شد:
DELETE FROM wp_postmeta WHERE post_id IN ( SELECT ID FROM wp_posts WHERE post_type = ‘shop_order’ );
DELETE FROM wp_posts WHERE post_type = ‘shop_order’;
با انجام کار های فوق کمی سرعت پیشخوان بهتر شد، اما هنوز ریشه مشکل پیدا نشده بود.
آپدیت نشدن ووکامرس
بعد از چند مدت، کاملا ناگهانی و بدون اینکه تغییراتی در سایت وdata base ایجاد کنم، ایمیل زیر رو دریافت کردم:
سایت شما با یک مشکل فنی را تجربه می کند
جزئیات خطا
===================
یک خطا از نوع E_ERROR در خط 114 از پروندهWoocommerce
با کمی جستجو متوجه شدم که آپدیتی برای افزونه ووکامرس در دسترس می باشد، اما نمی توانم ووکامرس را بروز رسانی کنم. چون توی پیشخوان هیچ به روز رسانی برای این افزونه در دسترس نیست! تصمیم گرفتم از طریق Active_plugins در Wp-Option دیتابیس اقدام کنم. روی ویرایش Active_plugins کلیک می کردم، با خطای زیر مواجه می شدم:
Error in processing request
Error code: 500
Error text: Internal Server Error (rejected)
It seems that the connection to server has been lost. Please check your network connectivity and server status.
راه حل نهایی
مشکل رو با پشتیبانی هاست (hostDL) در میان گذاشتم. پاسخ هاست:
“مشکل مقدار بسیار حجیم در جدول options برای این option_name هست. من با mysqldump ازش خروجی گرفتم تا شما بتونید ببینید محتویاتش رو.
قطعا این مقدار option value برای active plugins اصلا عادی نیست و مشکل داخلی خود wordpress محسوب میشه”
محتویات جدول رو که مشاهده کردم، دیدم هزاران بار (حدود 346 هزار بار) افزونه ووکامرس فعال شده! از اوجایی که محتویات این جدول serialized هست، با دستور SQL نمیشه محتوایت و Record ها رو ویرایش کرد.
راهکار نهایی: از طریق پیشخوان وردپرس -> افزونه های نصب شده -> ووکامرس ؛ روی غیر فعال سازی کلیک کنید، یکی از این مقدار کم میشه. اینکار رو بایستی اینقدر تکرار کنید تا محتویات table active_plugins قابل رویت شود.
مرجع بنده: wordpress