رفع خطای Allowed Memory Size Exhausted در وردپرس
وقتی وردپرس میگوید «حافظه کافی ندارم»
اگر با پیامی شبیه به این مواجه شدهاید:
Fatal error: Allowed memory size of X bytes exhausted
یعنی وردپرس یا یکی از افزونهها تلاش کرده بیش از مقدار تعیینشده RAM مصرف کند و PHP اجرای اسکریپت را متوقف کرده است.
این خطا معمولاً در شرایط زیر ظاهر میشود:
- نصب یا آپدیت افزونه
- ایمپورت فایلهای بزرگ
- اجرای صفحهسازها (مثل المنتور)
- کار با ووکامرس
- ذخیره نوشتههای سنگین
واکنش رایج چیست؟ افزایش عدد memory_limit در wp-config. اما سؤال اصلی اینجاست:
اگر زیرساخت واقعاً آن حافظه را نداشته باشد، تغییر عدد چه کمکی میکند؟
تعریف دقیق خطای Memory Exhausted با نگاه فنی
PHP برای هر اسکریپت یک سقف مصرف حافظه تعریف میکند (memory_limit). اگر اسکریپت بیش از این مقدار RAM مصرف کند یا منابع بهصورت Shared بین کاربران تقسیم شده باشد، PHP اجرای آن را متوقف میکند.
در وردپرس مدرن (۲۰۲۵–۲۰۲۶)، ابزارهایی مانند ویرایشگر بلوکی، REST API، افزونههای امنیتی و صفحهسازها همگی مصرف حافظه بیشتری نسبت به نسخههای قدیمی دارند. پس memory_limit پایین در هاستهای قدیمی، بهسادگی باعث این خطا میشود.
بررسی عوامل تأثیرگذار در بروز کمبود حافظه PHP
۱
محدودیت واقعی RAM در هاست اشتراکی
در بسیاری از هاستهای اشتراکی، Memory اسمی بالا اعلام میشود اما در عمل RAM بین چند سایت تقسیم شده است. وجود CloudLinux مصرف RAM هر کاربر را جدا کرده و از تداخل منابع جلوگیری میکند.
۲
نبود OPcache و اجرای مجدد کدها
اگر OPcache فعال نباشد، هر بار PHP کل اسکریپت را دوباره کامپایل میکند که باعث افزایش مصرف RAM میشود. در ترکیب PHP 8.x و OPcache فعال، مصرف حافظه بسیار بهینهتر مدیریت میشود.
۳
فشار دیتابیس و عدم استفاده از Redis
وقتی Object Cache وجود ندارد، دادهها بارها از دیتابیس خوانده شده و ساختارهای دادهای بزرگ در RAM ساخته میشوند. استفاده از Redis دادههای پرتکرار را در RAM نگه داشته و مصرف حافظه PHP را پایین میآورد.
۴. نقش وبسرور و LiteSpeed
در سرورهایی که کش مؤثر ندارند، هر درخواست به PHP میرسد و مصرف RAM سریع بالا میرود. در ترکیب LiteSpeed + LSCache، بسیاری از درخواستها از کش پاسخ داده شده و PHP کمتر درگیر میشود.
۵. دیسک و NVMe؛ عامل غیرمستقیم
اگر دیسک کند باشد، اسکریپت دیر اجرا شده و حافظه برای مدت طولانیتری اشغال میماند. NVMe واقعی با کاهش زمان اجرای اسکریپت، مدت زمان اشغال حافظه را کوتاهتر میکند.
۶. افزونههای سنگین در محیط ضعیف
برخی افزونهها مثل Page Builderها یا بکاپگیرها در محیطی با RAM محدود بهسادگی باعث Memory Exhausted میشوند، اما روی زیرساخت بهینه بهدرستی اجرا میشوند.
مقایسه گزینهها با نگاه کاربردی
هاست اشتراکی معمولی
- memory_limit پایین
- RAM واقعی محدود
- بدون Redis
- ریسک بالای خطای Memory
هاست اشتراکی پرسرعت (بهینه برای وردپرس)
- PHP 8.x و OPcache فعال
- NVMe و Redis (در صورت نیاز)
- CloudLinux برای کنترل RAM
- LiteSpeed + LSCache
راهکار پیشنهادی: اگر مدام با خطای کمبود حافظه PHP مواجه میشوید، افزایش دستی عدد memory_limit کافی نیست؛ استفاده از هاست وردپرس با RAM واقعی و مدیریت منابع استاندارد راهحل پایدارتر خواهد بود.
VPS خام
- امکان افزایش RAM
- اما اگر مدیریت نادرست باشد، مصرف بیرویه رخ میدهد
- بدون Redis و بهینهسازی، مشکل همچنان باقی میماند
اشتباهات رایج کاربران درباره خطای Memory
- افزایش memory_limit بدون منابع واقعی
- نصب همزمان چند افزونه کش
- استفاده از افزونههای سنگین روی هاست ضعیف
- نادیده گرفتن نقش Redis
- باقی ماندن روی PHP قدیمی
- مهاجرت به VPS بدون مانیتورینگ
- تصور اینکه مشکل فقط از افزونه است
جمعبندی تصمیمساز + Call To Action
خطای Allowed Memory Size Exhausted نشانهای است از اینکه سایت شما بزرگتر از ظرفیت فعلی زیرساخت اجرا میشود یا منابع بهدرستی مدیریت نمیشوند. راهحل واقعی شامل PHP 8.x، OPcache فعال، NVMe، Redis و ایزولهسازی RAM است.
پیشنهاد فنی: اگر میخواهید افزونهها و عملیات سنگین وردپرس بدون خطای حافظه اجرا شوند، انتخاب سرویسی که منابع واقعی و مدیریتشده ارائه دهد تصمیمی فنی و آیندهنگرانه است.
FAQ – سوالات متداول
سوال ۱: آیا افزایش عدد memory_limit مشکل را حل میکند؟
فقط در صورتی که RAM واقعی در سرور موجود باشد؛ در غیر این صورت تغییر عدد تاثیری نخواهد داشت.
سوال ۲: PHP 8.x چه تأثیری در این خطا دارد؟
PHP 8 نسبت به نسخههای قدیمی در مدیریت حافظه بسیار کارآمدتر است و اسکریپتها را با RAM کمتری اجرا میکند.
سوال ۳: Redis چطور به رفع این خطا کمک میکند؟
Redis با Cache کردن اشیاء دیتابیس (Object Cache)، فشار محاسباتی PHP را کم کرده و در نتیجه حافظه کمتری اشغال میشود.
سوال ۴: آیا NVMe در این خطا نقش دارد؟
بله؛ سرعت بالای NVMe باعث میشود اسکریپت سریعتر تمام شود و حافظه زودتر آزاد گردد.
سوال ۵: چرا روی VPS هم این خطا رخ میدهد؟
بهدلیل تنظیمات اشتباه در php.ini یا اختصاص دادن RAM فیزیکی ناکافی به ماشین مجازی.
