حل مشكلة Allowed Memory Size Exhausted في ووردبريس
المشكلة: يظهر خطأ Allowed Memory Size Exhausted عندما تستنفد PHP كامل الذاكرة المسموح بها وتفشل في تنفيذ المهمة المطلوبة. الخطأ شائع جدًا في ووردبريس خاصة عند رفع الملفات، تشغيل إضافات ثقيلة، أو تنفيذ استعلامات معقدة. لحسن الحظ يمكن حل المشكلة بسهولة عبر مجموعة خطوات بسيطة قبل اللجوء للحلول التقنية المتقدمة.
لماذا يظهر خطأ Allowed Memory Size Exhausted؟
الخطأ يحدث بسبب استهلاك أكثر من قيمة memory_limit في PHP. الأسباب الأكثر شيوعًا هي:
- استهلاك كبير للذاكرة من إضافة معينة مثل WooCommerce أو Elementor أو WPML.
- قالب غير محسن يقوم بتحميل ملفات ضخمة أو استعلامات ثقيلة.
- إعداد memory_limit منخفض جدًا (مثل 128M أو أقل).
- استعلامات قاعدة بيانات بطيئة تؤدي لاستهلاك الذاكرة تدريجيًا.
- تسريبات ذاكرة Memory Leaks من أكواد PHP أو إضافات poorly coded.
- مشاكل في الخادم مثل إعدادات Apache/Nginx غير صحيحة أو Limits منخفضة.
خطوات تشخيص المشكلة
- تفعيل وضع التصحيح في ووردبريس:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
- مراجعة ملف debug.log:
/wp-content/debug.log
ابحث عن الإضافة أو الملف الذي تسبب في استنفاد الذاكرة. - مراقبة استهلاك الخادم:
- CPU Load
- RAM Usage
- I/O Limits
- تعطيل الإضافات الثقيلة مؤقتًا مثل Elementor أو WPML لمعرفة إن كانت السبب.
- مراجعة أخطاء الخادم عبر:
error_log
/var/log/nginx/error.log
/var/log/apache2/error.log
أولًا: حلول بسيطة (للمستخدم العادي)
الحل 1: رفع حد الذاكرة من wp-config.php
أضف هذا السطر قبل /* That's all, stop editing! */:
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' );
الحل 2: رفع الذاكرة من .htaccess
php_value memory_limit 512M
الحل 3: رفع الذاكرة من ملف php.ini (لو مسموح)
memory_limit = 512M
max_execution_time = 300
الحل 4: تعطيل الإضافات المسببة للمشكلة
أعد تسمية مجلد الإضافات:
wp-content/plugins → plugins_off
ثم فعّل الإضافات واحدة تلو الأخرى لمعرفة المسبب.
إضافات تساعدك في اكتشاف الاستهلاك العالي:
الحل 5: تحسين قاعدة البيانات
قد تكون الجداول ضخمة أو تالفة. استخدم:
ثانيًا: حلول متقدمة للمطورين
الحل 6: تحليل الاستعلامات التي تستهلك ذاكرة عالية
باستخدام Query Monitor → تبويب Queries:
- استعلامات أكبر من 0.2 ثانية
- استعلامات غير مفهرسة
- استعلامات متكررة Duplicate Queries
الحل 7: تحليل إضافات تستهلك RAM
أكثر إضافات تسبب الخطأ:
- Elementor
- WooCommerce (خصوصًا المنتجات المتغيرة)
- WPML
- RankMath/Yoast عند إعادة فهرسة ضخمة
الحل 8: تحسين قاعدة البيانات يدويًا (SQL)
OPTIMIZE TABLE wp_posts;
OPTIMIZE TABLE wp_postmeta;
OPTIMIZE TABLE wp_options;
OPTIMIZE TABLE wp_users;
الحل 9: إصلاح الملفات التالفة
أحيانًا يحدث الخطأ بسبب ملفات ووردبريس تالفة. الحل السريع هو:
- تحميل نسخة ووردبريس الرسمية
- رفع ملفي
wp-admin+wp-includes
بدون حذف أي ملف داخل wp-content.
منع تكرار المشكلة في المستقبل
- رفع الخطة في الاستضافة إن كانت موارد الخادم قليلة.
- عدم استخدام إضافات ثقيلة بدون الحاجة.
- تنظيف قاعدة البيانات شهريًا.
- تفعيل Object Cache مثل Redis.
- تحديث PHP إلى 8.2 أو أعلى.
روابط مفيدة
الخلاصة
خطأ Allowed Memory Size Exhausted غالبًا سببه قيمة ذاكرة منخفضة أو إضافة تستهلك موارد كبيرة. ابدأ دائمًا بالحلول السهلة مثل رفع memory_limit أو تعطيل الإضافات، ثم انتقل للحلول المتقدمة مثل تحليل الاستعلامات وتحسين قاعدة البيانات. مع الصيانة المستمرة وتحديثات PHP، لن تواجه المشكلة مرة أخرى.
