فهم حدود ذاكرة PHP
لماذا القيمة الافتراضية لـ memory_limit متحفّظة، ومتى يكون رفعها صوابًا، ولماذا الموقع الذي يحتاج غيغابايت لديه مشكلة أخرى.
يحدّ memory_limit مقدار الذاكرة التي يجوز لسكربت PHP واحد أن يحجزها. ينطبق على
الاستضافة المشتركة والموزِّعة والمميّزة.
والقيمة الافتراضية في Select PHP Version أقل من الحد الأقصى المتاح عمدًا.
لماذا الافتراضي متحفّظ
الحد صمّام أمان. فبدونه، يحجز سكربت شارد واحد — حلقة لا نهائية، أو نتيجة استعلام بلا حدود — حتى لا يبقى للخادم شيء، فيُسقط كل حساب عليه.
والافتراضي المتحفّظ يكفي للغالبية العظمى من المواقع، ويعني أن عطلًا في سكربت واحد يبقى محتوىً.
رفعه
cPanel ← Select PHP Version ← Options — راجع تغيير إصدار PHP وإعداداته.
وأسباب معقولة لرفعه:
- استيراد ملف أو قاعدة بيانات كبيرة عبر واجهة ويب
- معالجة الصور في عمليات الرفع الكبيرة
- متجر WooCommerce بكتالوج كبير
- تطبيق يوثّق متطلبًا أعلى
رفع memory_limit لا يرفع حد ذاكرة حسابك. فذلك تحدّده باقتك، وهو ما ينتج
أخطاء 503 — راجع
شرح CloudLinux وحدود LVE.
وضبط memory_limit فوق مخصّصات حسابك لا يحقّق شيئًا: فالسكربت يُقتل عند حد
الحساب على أي حال.
متى يكون رفعه الجواب الخطأ
لا ينبغي أن يحتاج تحميل صفحة عادي مئات الميغابايتات. فووردبريس يقدّم صفحة بارتياح ضمن 128–256 ميغابايت. فإن كان موقع يحتاج غيغابايتًا لتحميل صفحته الرئيسية، فالحد ليس المشكلة — بل شيء يحمّل أكثر بكثير مما ينبغي.
والأسباب المعتادة:
- إضافة تستعلم بلا حدود، فتحمّل جدولًا كاملًا إلى الذاكرة
- حلقة بلا حدود تراكم البيانات
- معالجة صور مع كل طلب بدل مرة واحدة عند الرفع
تتبّعه قبل رفع أي شيء — فـ PHP X-Ray يعرض أين يذهب العمل. ورفع الحد يخفي العَرَض، والمشكلة الكامنة تستهلك معالج حسابك وعمليات دخوله أيضًا.
للموزّعين
لا يستطيع الموزّعون رفع الافتراضي المطبَّق على الحسابات الجديدة — فذلك مضبوط من جهة الخادم. ويمكن تغيير الحسابات الفردية ضمن مخصّصاتها كما أعلاه، ويرفع Resource Boost+ السقف لحساب واحد.
تأكّد مما هو مطبَّق فعلًا
<?php echo ini_get('memory_limit');احذف الملف بعد ذلك. وعلى Bolt-Cache، يُتجاهَل محدّد PHP تمامًا وتأتي القيمة من
.user.ini — راجع
تغيير إصدار PHP وإعداداته.