خطای Fatal Error: Allowed Memory Size Exhausted چیست؟
خطای Allowed Memory Size Exhausted در وردپرس به این معنی است که سایت برای اجرای درخواست های کاربر به حافظه RAM بیشتری احتیاج دارد اما میزان مجاز استفاده پر شده.
اگر بخواهیم فنی تر به این خطا بپردازیم: وردپرس برای پردازش هر درخواست کاربر مقداری از حافظه RAM را اشغال می کند. هنگامی که برای اجرای یک قطعه کد PHP مثلا یک افزونه، سایت وردپرسی نیاز به حافظه RAMبیشتری دارد، اما میزان (memory_limit) یا سقف تعیین شده توسط سرور پر شده باشد، سرور بلافاصله پردازش را قطع می کند تا کل سرور از کار نیفتد. و ارور Allowed Memory Size Exhausted نمایش داده می شود.

چرا وردپرس با محدودیت حافظه روبرو می شود؟
زبان PHP برای اجرای دستورات افزونه ها و قالب های وردپرسی، به مصرف میزان مشخصی از حافظه موقت RAM احتیاج دارد. باتوجه به اینکه اغلب سایت های وردپرسی از هاست اشتراکی استفاده می کنند، شرکت های هاستینگ برای جلوگیری از صرف همه منابع سرور توسط یک سایت پارامتری به نام PHP Memory Limit تعریف می کنند. این پارامتر سقف میزان حافظه مجاز هر سایت را مشخص می کند و اگر دستورات PHP سایت میزان حافظه بیشتری درخواست کند، اجرای اسکریپت ها متوقف شده و وردپرس با خطا حافظه مواجه می شود.
علت بروز Memory Exhausted Error در وردپرس
- نصب افزونه های زیاد یا استفاده از افزونه های سنگین: هر پلاگین یا افزونه ای که روی سایت نصب می کنید؛ هنگام اجرا بخشی از حافظه RAM را اشغال می کند. هر چه تعداد افزونه های شما بیشتر باشد طبیعتا احتمال کمبود حافظه در سایت شما بیشتر است. علاوه بر این افزونه های سنگین مثل ووکامرس و صفحه سازها میزان زیادی از حافظه نیاز دارند.
- پوسته یا قالب های سنگین: قالب های سنگین و چند منظوره که دارای دستورات PHP پیچیده هستند؛ به میزان حافظه بیشتری نسبت به پوسته های ساده وردپرسی نیاز دارند.
- پردازش تصاویر بزرگ: هنگام بارگذاری یک تصویر بزرگ (از لحاظ ابعاد) وردپرس از کتابخانه هایی مثل GD Library یا ImageMagick برای باز کردن، تغییر اندازه و برش تصاویر استفاده می کند. این فرآیند مصرف حافظه را بشدت افزایش می دهد.
- دیتابیش سنگین و بهینه نشده: اگر دیتابیس سایت، به دلیل عدم بهینه سازی سنگین شده و شامل اطلاعات افزونه های پاک شده یا نظرات اسپم باشد؛ دستورات PHP برای واکشی اطلاعات از دیتابیس به حافظه بیشتری احتیاج دارند.
راه حل عملی برای رفع خطای Memory Exhausted Error
افزایش PHP Memory Limit در هاست
میزان php memory limit را از طریق پیشخوان> ابزارها> سلامت سایت > تب اطلاعات و بخش سرور در سایت خود چک کنید و اگر زیر 512M برای حافظه php در نظر گرفته شده از راه های زیر ارتقا دهید.

فایل wp-config.php:
از طریق فایل منیجر هاست وارد پوشه public_html شوید و فایل wp-config.php را ویرایش کنید. قبل از خط /* That’s all, stop editing! */ کدهای زیر را اضافه کنید:
define(‘WP_MEMORY_LIMIT’, ‘512M’);
define(‘WP_MAX_MEMORY_LIMIT’, ‘512M’);
فایل php.ini:
در مسیر root یا ریشه سایت فایل php.ini را پیدا کنید و کد زیر را اضافه کنید:
memory_limit = 512M
هاست سی پنل (Cpanel):
اگر هاست سی پنل دارید از طریق بخش select php version و قسمت option می توانید میزان memory limit را افزایش دهید.

نکته مهم : اگر هاست اشتراکی ضعیفی دارید، حتی با تغییر کدها هم ممکن است محدودیت حافظه ارتقا پیدا نکند. بنابراین حتما از طریق پشتیبانی هاستینگ نسبت به ارتقا php memory limit اقدام کنید.
چه زمانی افزایش حافظه راهکار درستی نیست؟
اگر میزان PHP Memory Limit را به M512 ارتقا داده اید؛ اما هنوز خطای Allowed Memory Size Exhausted دارید؛ مشکل از حافظه نیست. بنابراین افزایش حافظه بیشتر از این هم مشکل را برطرف نمی کند. در این گونه مواقع اغلب یک افزونه مخرب یا ناسازگار یا یک خطا برنامه نویسی در سایت باعث سواستفاده از منابع شده. و باید به جای ارتقا حافظه افزونه سنگین یا ناسازگار را پیدا کنید. و در صورت امکان با یک افزونه سبک جایگزین کنید.
بهینه سازی المنتور
اگر از صفحه ساز المنتور استفاده میکنید و با وجود افزایش ظرفیت حافظه همچنان خطای کمبود حافظه دارید؛ باید برای رفع خطا تنظیماتی برای بهینه سازی المنتور انجام دهید. یکی از راهکارهای بهینه سازی غیرفعالسازی ویجت ها یا المان های بی استفاده در المنتور است. در صورتی که از افزونه های جانبی المنتوری مثل افزونه های سری جت استفاده میکنید؛ فقط ماژول های مورد نیاز را فعال نگه دارید.
ارتقا نسخه php
نسخه های قدیمی PHP مصرف حافظه زیادی دارند. با درنظر گرفتن سازگاری افزونه ها و قالب سایت، از طریق تنظیمات هاست ورژن PHP را به 8.1 یا بالاتر ارتقا دهید.
شناسایی افزونه یا قالب پرمصرف
برای تست و شناسایی افزونه ای که مصرف زیاد حافظه دارد؛ ابتدا همه افزونه ها را موقتا غیرفعال کنید. اگر خطا رفع شد؛ یکی یکی افزونه ها را فعال کنید تا پلاگین مشکل ساز مشخص شود. اگر خطا رفع نشد قالب یا پوسته سایت را با یکی از قالب های پیشفرض وردپرس جایگزین کنید. و اگر مشکل از سمت قالب بود باید قالب را بهینه سازی کنید.
ارتقا پلن یا تغییر هاست
اگر تمامی موارد گفته شده را انجام دادید و باز هم خطای Allowed Memory Size Exhausted از بین نرفت؛ نیاز است پلن هاست را ارتقا دهید یا اینکه سایت را به یک هاست باکیفیت و با منابع بیشتر منتقل کنید.
جمع بندی
خطای Memory Exhausted Error در سایت های وردپرسی که علیرغم استفاده از هاست اشتراکی ضعیف افزونه های سنگین دارند؛ بسیار دیده می شود. برای رفع خطا ابتدا باید محدودیت حافظه را افزایش داده و افزونه های سنگین سایت را بهینه یا جایگزین کنید.




2 پاسخ
خواهش میکنم اموزشی برای رفع کندی وردپرس در اینترنت ملی بزارین ، قبلی باعث میشه سایت خراب بشه و کدش خرابه .
سلام درود بر شما
آموزش رفع کندی پیشخوان وردپرس با اینترنت ملی قرار داده ایم